删除dll中对CRT的依赖

时间:2011-12-26 15:22:44

标签: windows dll crt

我正在Visual Studio 2010上构建一个dll,我正在使用一些简单的C函数,如fprintffread,默认情况下它会链接到msvcr100.dll

此dll将被加载到可能使用其他CRT版本的应用中(例如msvcr90.dllmsvcrt.dll)。

由于我知道应用程序会在我的dll加载之前加载CRT,我可以删除msvcr100.dll上的依赖项并使用应用程序加载的CRT中的C函数吗?

1 个答案:

答案 0 :(得分:0)

最后,我决定针对目标应用msvcr90.dll使用的最小公分母CRT版本构建DLL。

我是通过使用Visual C ++ 2008 Express(免费)提供的MSVC工具链完成的。

我确实尝试过mingw / gcc工具链,它允许您指定要链接的CRT版本(请参阅mingw-rtgcc -specs=msvcr**),但是,msvcr90.dll是一种新风格SxS程序集,所以我无法使生成的可执行文件正常运行。

可能值得考虑完全跳过与msvcr**.dll的链接;请参阅this postVC/include/delayhlp.cpp