神秘的相对路径库依赖

问题描述 投票:0回答:3

在 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 and Project->Properties->Linker->Additional 下添加了此目录图书馆目录。我也搜索了项目中的所有文件,但没有结果。

我在调试和发布的附加依赖项下列出了库文件 (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 “自动”附加的。

谢谢你们俩,我想是尼克让我走上了正轨。

c++ visual-studio-2008 linker
3个回答
4
投票

在项目属性中,查看“配置属性”->“链接器”->“输入”->“附加依赖项”,了解每个项目的配置(调试、发布等)。另外,在代码中查找

#pragma comment(lib, ...)
指令。

当您将

C:\xpressmp\lib
文件夹添加到 VC++ 目录中的库搜索路径时,请检查“附加依赖项”下是否仅指定了库文件名,并且这不包括路径(即
xprm_rt.lib
,而不是
..\..\xpressmp\lib\xprm_rt.lib
)。

另外,您是否尝试过LNK1104错误文档中的每个解决方案?


1
投票

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

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

这就是我能想到的可能导致错误的原因;希望有帮助。


0
投票

感谢您这么快回复!

我在调试和发布的附加依赖项下列出了库文件 (

xprm_rt.lib
)。我也尝试在那里添加路径,但这没有帮助。我找不到任何
#pragma comment
指令。

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

..\..\...
)

© www.soinside.com 2019 - 2024. All rights reserved.