链接到 ATL 项目中的 CRT

C 运行时库 (CRT) 提供了许多有用的函数,这些函数可使 ATL 开发期间的编程更加容易。 所有 ATL 项目链接到 CRT 库。 可以在用于链接到 CRT 的方法的优缺点中查看链接方法的优缺点。

链接到 CRT 对程序映像产生的影响

如果静态链接到 CRT,则 CRT 中的代码将放置在可执行映像中,并且无需在系统上提供 CRT DLL 也能运行映像。 如果动态链接到 CRT,则 CRT DLL 中对代码的引用将放置在映像中,而不是放置代码本身。 为了使映像在给定系统上运行,CRT DLL 必须存在于该系统上。 即使动态链接到 CRT,也可能会发现某些代码可以静态链接(例如 DllMainCRTStartup)。

链接映像时,可以显式或隐式指定操作系统在加载映像后将调用的入口点。 对于 DLL,默认入口点是 DllMainCRTStartup。 对于 EXE,则是 WinMainCRTStartup。 可以使用 /ENTRY 链接器选项替代默认值。 CRT 为 DllMainCRTStartupWinMainCRTStartupwWinMainCRTStartup 提供实现(为 EXE 提供 Unicode 入口点)。 这些 CRT 提供的入口点调用全局对象的构造函数,并初始化某些 CRT 函数使用的其他数据结构。 如果是静态链接,此启动代码会为映像添加大约 25K 大小。 如果是动态链接,则大部分代码都位于 DLL 中,因此映像大小会比较。

有关详细信息,请参阅链接器主题 /ENTRY(入口点符号)

优化选项

使用链接器选项 /OPT:NOWIN98 可以进一步将默认 ATL 控件减少 10K,代价是增加 Windows 98 系统加载时间。 有关链接选项的详细信息,请参阅 /OPT(优化)

另请参阅

使用 ATL 和 C 运行时代码进行编程
DLL 和 Visual C++ 运行时库行为