我有一个 dll 项目,在发布配置中构建项目时,我收到以下警告:
MSVCRT.lib(cinitexe.obj):警告 LNK4098:defaultlib 'msvcrtd.lib' 与其他库的使用冲突;使用 /NODEFAULTLIB:library
这只是一个警告,但我不知道是否应该考虑到这一点。
根据我的发现,它们都是多线程库、正常版本和调试版本。我的 dll 使用多线程,我可以调试它,虽然我使用 boost:thread ,所以我真的不知道我是否需要这个 Windows 特定的库来调试或发布构建......
亲切的问候,亚历克斯
好吧,我按照 BuschnicK 的建议做了,并使用 /VERBOSE:LIB 链接器标志发现我在调试配置中链接到这些库:
boost_filesystem-vc100-mt-gd-1_44.lib:libboost_system-vc100-mt-gd-1_44.lib:libboost_thread-vc100-mt-gd-1_44.lib:libboost_date_time-vc100-mt-gd-1_44.lib:
我在发布配置中也有同样的情况,主要是因为我没有“明确地”指定。因此,我在 Release 中将它们更改为:
boost_filesystem-vc100-mt-1_44.lib: libboost_system-vc100-mt-1_44.lib: libboost_thread-vc100-mt-1_44.lib: libboost_date_time-vc100-mt-1_44.lib:
这似乎有效,但我仍然收到第一个警告,直到我意识到我的发布配置中也有 _DEBUG 预处理器定义,删除它并且它现在工作正常。
谢谢大家的帮助!!