0

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

在我的机器上,这按我的预期工作,将它添加到链接器命令行:

/LIBPATH:"LibDir" 3rdParty.lib

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

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

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

此问题并非特定于该库 - 似乎我们尝试以这种方式在我同事的机器上包含的任何第 3 方库最终都会被添加到命令行两次。

是什么导致了他的机器和我的机器之间的行为差​​异?

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

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

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

有任何想法吗...?

4

2 回答 2

0

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

于 2009-12-17T19:26:45.020 回答
0

检查附加目录中您的朋友项目中是否有任何不必要的依赖项继承。

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

你能从编译器/链接器发布你的命令行吗(这可以在properites中找到)。

于 2009-09-22T12:32:04.393 回答