【发布时间】:2011-05-19 02:35:25
【问题描述】:
我有一个 dll 项目,当我在发布配置中构建项目时,我收到以下警告:
MSVCRT.lib(cinitexe.obj):警告 LNK4098:默认库“msvcrtd.lib” 与其他库的使用冲突;采用 /NODEFAULTLIB:库
这只是一个警告,但我不知道是否应该考虑到这一点。
据我所知,它们都是多线程库、正常版本和调试版本。我的 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 预处理器定义,将其删除,它现在工作正常。
感谢大家的帮助!!
【问题讨论】:
标签: c++ linker-warning