【问题标题】:Visual Studio 9: Display Linker Search PathsVisual Studio 9:显示链接器搜索路径
【发布时间】:2013-12-24 01:38:40
【问题描述】:

如何说服 MSVC9 链接器向我显示它正在搜索的路径包括库 (libs)?

我正在尝试解决出现以下链接器错误的问题:

LINK : fatal error LNK1104: cannot open file 'MyGizmo.lib'

Linker > General 下,我将 Additional Library Directories 设置为:

..\..\..\x64\Release

我想,我要查找的 lib 文件所在的位置。

当我将此路径更改为 lib 文件所在的完全限定目录时,链接器会传递并找到 lib 文件。因此,我得出结论,我上面输入相对路径的方式是不正确的。如果路径是相对于源代码所在的位置,那么这个相对路径应该是正确的。

那么我如何告诉 MSVC9 链接器告诉我它认为 ..\..\..\x64\Release 解析为什么?

【问题讨论】:

  • 由于您确切地知道您的库所在的位置,您可能需要考虑使用通过宏的完全限定路径(例如$(SolutionDir))。您也可以将它们与相对路径结合起来:$(SolutionDir)..\..\..\x64\Release。这样您就不必依赖当前的工作目录。
  • 不能保证 2008 年,但在 2005 年和 2010 年,路径都是相对于项目目录(不是解决方案目录)
  • @IInspectable:这是我尝试过的,但也没有用。这就是最终导致我挠头发帖的原因。
  • @John 这很奇怪。无论如何,要回答您最初的问题,您应该指定 /VERBOSE:LIB 链接器选项。这将打印库搜索过程的输出(包括完整路径)。
  • @IInspectable:我也这样做了,但它没有显示 路径——它只显示了它正在考虑的库。

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


【解决方案1】:

在上面发布我的问题后,我想出了一种方法。我不知道这是否是一个可取的方法,但它对我有用并且我能够解决问题。

我创建了一个自定义预链接步骤,它只是发出一个不带参数的cd 命令,以显示当前工作目录。

Configuration Properties > Build Events > Pre-Link Event 下,我将 Command Line 属性设置为:

cd

再次构建时,输出为:

1>------ Build started: Project: MyThingy, Configuration: Release x64 ------
1>Performing Pre-Link Event...
1>c:\build\VS2008\SuperWare\Some\Library\
1>Linking...

我要查找的库位于:

c:\build\vs2008\SuperWare\Tools\Gizmo\x64\Release

由此我能够推断出我需要的相对路径是:

..\..\Tools\Gizmo\x64\Release

我相应地更改了 Additional Library Directories 属性,构建成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    相关资源
    最近更新 更多