【问题标题】:Mysterious relative path library dependency神秘的相对路径库依赖
【发布时间】:2009-02-05 16:25:12
【问题描述】:

在 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->Linker->Additional下都添加了这个目录图书馆目录。我也搜索了项目中的所有文件都没有结果。

我的库文件 (xprm_rt.lib) 列在 Debug 和 Release 的 Additional Dependencies 下。我也尝试在那里添加路径,但这没有帮助。我找不到任何#pragma 注释指令。

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

任何帮助表示赞赏:-)

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

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

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

谢谢你们,我认为是尼克让我走上了正轨。

【问题讨论】:

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


    【解决方案1】:

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

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

    另外,您是否尝试过LNK1104 error documentation 中的每个解决方案?

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        感谢您如此迅速地回答!

        我的库文件 (xprm_rt.lib) 列在 Debug 和 Release 的 Additional Dependencies 下。我也尝试在那里添加路径,但这没有帮助。我找不到任何#pragma comment-directives。

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

        【讨论】:

        • 答案是为了答案。使用 cmets 或编辑问题进行回复。
        • 谢谢,添加后我意识到这不是在这里做的方法。对不起
        猜你喜欢
        • 2010-11-21
        • 1970-01-01
        • 2016-02-13
        • 2021-05-14
        • 1970-01-01
        • 2014-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多