仍然需要通过详细的over here进行大型编译,但是我对/ NODEFAULTLIB的使用有一个特殊的疑问。

我一直在尝试使用此/ NODEFAULTLIB:LIBCMTD开关来解决链接器问题,其中解决方案中的一个项目正在使用/ MTd(LIBCMTD.LIB)而不是/ MDd MSVCR90D.DLL。

不幸的是,您可能通过这篇文章的标题来猜测,我似乎没有正确使用它。构建解决方案后,我在三个地方看到此警告:
1>cl : Command line warning D9002 : ignoring unknown option '/NODEFAULTLIB:LIBCMTD'
我正在Windows XP Professional SP3上运行Visual Studio 2008 Standard SP1。我通过右键单击麻烦的项目,选择属性,展开“配置属性”,展开C / C++列表,选择“命令行”,然后在“其他选项”中输入/ NODEFAULTLIB:LIBCMTD来添加此开关。 Realm 。

我在网络上的其他地方读到,这应该是链接器设置,而不是C / C++设置,因此我也尝试在“配置属性”->“构建事件”->“预链接事件”->“命令行”下输入它这给了我自己警告,而没有从编译中得到任何不同的结果:
1>The filename, directory name, or volume label syntax is incorrect.1>Project : error PRJ0019: A tool returned an error code from "Performing Pre-Link Event..."
那么,人们... / NODEFAULTLIB开关呢,我在这里不明白吗?如何使VS2008识别该命令并停止忽略它?

谢谢,
-亚历克斯

最佳答案

在项目属性中,您将找到:配置属性->链接器->输入->

 'Ignore All Default Libraries'
 'Ignore Specific Default Libraries' <-- this is I suppose of interest for you

您可以尝试将libc; libcmtd; libcd放入其中,但我从未尝试过,在相同配置下编译所有lib是正确的方法

08-28 05:54