首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“忽略未知选项/NODEFAULTLIB:LIBCMTD”

“忽略未知选项/NODEFAULTLIB:LIBCMTD”
EN

Stack Overflow用户
提问于 2012-07-17 05:24:40
回答 2查看 10.6K关注 0票数 2

仍然在经历一个主要的编译作为详细的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 Studio2008Standard SP1。通过右键单击麻烦的项目,选择属性,展开"Configuration Properties",展开C/C++列表,选择"Command Line",并在"Additional options“字段中输入/NODEFAULTLIB:LIBCMTD,我添加了这个开关。

我在网上的其他地方读到,这应该是一个链接器设置,而不是C/C++设置,所以我也尝试在Configuration Properties->Build Events->Pre-Link Event->Command Line下输入它,尽管这会给我自己的警告,但不会从编译中产生任何不同的结果:

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识别该命令并停止忽略它?

谢谢,-Alex

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-17 05:45:29

在项目属性中可以找到:配置属性->链接器-> Input ->

代码语言:javascript
复制
 'Ignore All Default Libraries'
 'Ignore Specific Default Libraries' <-- this is I suppose of interest for you

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

票数 5
EN

Stack Overflow用户

发布于 2012-07-17 06:18:51

此选项已记录在here中。从表面上看,您现在似乎正确地使用了它,因为您在链接器页面而不是C++页面上使用它,但我怀疑可能缺少的是您需要在文件名中包括.lib,例如:

代码语言:javascript
复制
/NODEFAULTLIB:LIBCMTD.LIB

我认为,如果您删除此选项并查看您得到的链接器错误,那么它将告诉您所需的确切语法。不过,一个更好的解决方案是查看此项目中的所有单独的库和all,并找出哪些库正在使用其他运行时库。修复问题的根源比以后解决它更好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11512795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档