为什么库被添加到链接器命令行两次?

时间:2009-09-22 12:20:16

标签: visual-studio-2003

我有一个Visual C ++ 2003项目,它取决于第三方静态库。我的visual c ++项目也编译成静态库。我已经通过编辑项目属性从我的项目中引用了第三方库,将第三方库的目录添加到附加库目录(例如./LibDir),将库的名称添加到附加依赖项(例如3rdParty.lib)。

在我的机器上,这可以正常工作,将其添加到链接器命令行:

/LIBPATH:"LibDir" 3rdParty.lib

在我同事的机器上,它将它添加到链接器命令行:

/LIBPATH:"LibDir" 3rdParty.lib "LibDir\3rdParty.lib"

这会导致第三方库被链接两次,从而导致大量错误和警告。

这个问题不是特定于这个库 - 似乎我们试图以这种方式在我的同事的机器上包含的第三方库最终被添加到命令行两次。

导致他的机器与我的机器之间的行为有什么不同?

更新: 我现在已经在第三台机器上测试了这个,它显示了与我同事的机器相同的行为,即引用一个额外的依赖项导致它被添加两次到链接器命令行(这种差异发生在我打开完全相同的项目文件时每台机器)。

我能在机器和其他两台机器之间想到的唯一区别是,几年前我在我的机器上安装了VC ++ 2003,本周在另外两台机器上安装了VC ++ 2003。

此外,似乎只有在我的项目被编译到库时才会发生这种情况 - 如果它被编译为exe,则第三方库只会被添加到链接器命令行一次。

任何想法......?

2 个答案:

答案 0 :(得分:0)

检查“其他目录”中的“朋友”项目中是否存在任何不必要的依赖项继承。

尝试排除您的3rdParty.lib, 检查是否有任何$(ProjDir)或任何类似的附加,属性差异。

你可以从编译器/链接器发布你的命令行(这可以在适当的地方找到)。

答案 1 :(得分:0)

我遇到了同样的问题,并将包含的库移动到了一个没有任何空格的目录结构中。它工作得很好。