神秘的相对路径库依赖

时间:2009-02-03 09:45:21

标签: c++ visual-studio-2008 linker

在Visual Studio 2008中加载现有的MFC应用程序后,我留下了一个链接错误:

LINK : fatal error LNK1104: cannot open file '..\..\xpressmp\lib\xprm_rt.lib'

我看过“无处不在”,但我无法弄清楚相对路径的设置位置。 lib文件位于C:\ xpressmp \ lib中,我在Tools-Options-> Projects and Solutions-> VC ++ Directories-> Library files和Project-> Properties-&gt下添加了这个目录。 ;链接器 - >其他库目录。我还搜索了项目中的所有文件都无济于事。

我在调试和发布的附加依赖项下列出了库文件(xprm_rt.lib)。我也尝试在那里添加路径,但这没有帮助。我找不到任何#pragma comment-directives。

关于LNK1104,链接器正在搜索的位置中显然不存在该文件。但我不明白为什么它在那里搜索(..\..\ ...),因为我没有指定任何相对路径。

任何帮助表示赞赏: - )

更新: 在项目.vcproj文件中,我找到了以下xml:

<File RelativePath="..\..\XpressMP\lib\xprm_rt.lib"></File>
<File RelativePath="..\..\XpressMP\lib\xprs.lib"></File>

删除这些行后(它们在哪里设置?),我能够成功链接。感谢您的帮助,似乎相对库路径确实被VS“自动”追加。

谢谢你们两位,我认为尼克让我走上正轨。

3 个答案:

答案 0 :(得分:4)

在项目属性中,查看配置属性 - &gt;链接器 - &gt;输入 - &gt;附加依赖项,用于每个项目的配置(调试,发布等)。另外,在代码中查找#pragma comment(lib, ...)指令。

当您将C:\xpressmp\lib文件夹添加到VC ++目录中的库搜索路径时,请检查是否仅在Additional Dependencies下指定了库文件名,并且这不包括路径(即{{1 },而不是xprm_rt.lib)。

另外,您是否尝试过LNK1104 error documentation

中的每个解决方案

答案 1 :(得分:1)

这听起来像是我的几种可能性之一:

  • 库本身通过#pragma comment(lib,...)指令设置lib include路径;搜索库标题以查看是否是这种情况
  • 您的主要项目依赖于您的解决方案中包含的库项目,并且相关库路径由VC自动附加;检查主项目的命令行属性页以查看是否是这种情况

这就是我能想到的可能导致错误的东西;希望它有所帮助。

答案 2 :(得分:0)

感谢您迅速回答!

我在调试和发布的附加依赖项下列出了库文件(xprm_rt.lib)。我也尝试在那里添加路径,但这没有帮助。我找不到任何#pragma comment - 指令。

关于LNK1104,链接器正在搜索的位置中显然不存在该文件。但我不明白为什么它在那里搜索(..\..\...