我有一个dll项目,当我在Release配置下构建该项目时,会收到以下警告:
MSVCRT.lib(cinitexe.obj) :warning LNK4098: defaultlib 'msvcrtd.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
这只是一个警告,但我不知道是否应该考虑它。
根据我所了解的,它们都是多线程库,普通版本和调试版本。我的dll使用多线程,我可以调试它,尽管我使用boost:thread进行调试,所以我真的不知道我是否需要这些Windows特定的库来进行调试或发布构建...
亲切的问候, Alex
好吧,我按照BuschnicK的建议做了,使用/VERBOSE:LIB链接器标志,我发现我在Debug配置中链接到了这些库:
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配置中也有同样的设置,主要是因为我没有明确地指定它们。因此,我在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:
这似乎起作用了,但我仍然收到第一个警告,直到我意识到我的Release配置中也有_DEBUG预处理器定义,将其删除后,现在工作得很好。
感谢大家的帮助!
MSVCRT.lib(cinitexe.obj) :warning LNK4098: defaultlib 'msvcrtd.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
这只是一个警告,但我不知道是否应该考虑它。
根据我所了解的,它们都是多线程库,普通版本和调试版本。我的dll使用多线程,我可以调试它,尽管我使用boost:thread进行调试,所以我真的不知道我是否需要这些Windows特定的库来进行调试或发布构建...
亲切的问候, Alex
好吧,我按照BuschnicK的建议做了,使用/VERBOSE:LIB链接器标志,我发现我在Debug配置中链接到了这些库:
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配置中也有同样的设置,主要是因为我没有明确地指定它们。因此,我在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:
这似乎起作用了,但我仍然收到第一个警告,直到我意识到我的Release配置中也有_DEBUG预处理器定义,将其删除后,现在工作得很好。
感谢大家的帮助!