【发布时间】:2011-07-12 02:08:26
【问题描述】:
我正在尝试找到一种好方法来确定链接时哪个模块导致某个库被处理为“/DEFAULTLIB”,如 Visual Studio 的详细链接器输出所示。
这是我的情况,我有几个静态库先决条件,每个都有一个发布版本和一个调试版本(BlahD.lib 和 Blah.lib)。由于某种原因,在链接时,所有 *D.lib 都作为默认库处理,即使我正在构建一个带有指定为“附加依赖项”的非调试库的版本。如果我从不构建静态库的调试版本,那么这些 *D 文件将不存在,并且会出现链接器错误(无法打开文件)。
我可以通过为所有这些有问题的 .lib 文件指定 /NODEFAULTLIB 来成功构建我的项目。所有的发布库链接起来,每个人都很高兴。但我想了解这里发生了什么。是什么导致链接器处理这些 *D.lib 文件?我唯一的希望是编写某种脚本来转储这个庞大项目及其依赖项目中的所有内容(microsoft support)吗?即使这样,我也不明白要在 dumpbin 输出中查找什么,这是否适用于 .lib 文件以及 .obj 文件?
【问题讨论】:
标签: c++ visual-studio linker static-libraries