我正在Visual Studio 2010上构建一个dll,我正在使用一些简单的C函数,如fprintf
和fread
,默认情况下它会链接到msvcr100.dll
。
此dll将被加载到可能使用其他CRT版本的应用中(例如msvcr90.dll
,msvcrt.dll
)。
由于我知道应用程序会在我的dll加载之前加载CRT,我可以删除msvcr100.dll
上的依赖项并使用应用程序加载的CRT中的C函数吗?
答案 0 :(得分:0)
最后,我决定针对目标应用msvcr90.dll
使用的最小公分母CRT版本构建DLL。
我是通过使用Visual C ++ 2008 Express(免费)提供的MSVC工具链完成的。
我确实尝试过mingw / gcc工具链,它允许您指定要链接的CRT版本(请参阅mingw-rt和gcc -specs=msvcr**),但是,msvcr90.dll
是一种新风格SxS程序集,所以我无法使生成的可执行文件正常运行。
可能值得考虑完全跳过与msvcr**.dll
的链接;请参阅this post和VC/include/delayhlp.cpp
。