【问题标题】:External Libraries in Visual Studio 2010Visual Studio 2010 中的外部库
【发布时间】:2012-04-23 17:51:52
【问题描述】:

我希望在项目中使用一些外部库:libpng 和 libvorbis。现在,在 Linux 上,我可以愉快地构建这些,只需将配置文件添加到 scons 以允许额外的 include/lib 路径,如果您想在系统包含路径之外构建它们。

不过,MSVS 2010 似乎有点挑剔:

  • 我可以将这些库的发布版本的路径添加到用户属性页面上的 VC++ 目录中,但这不适用于静态链接(因为需要调试版本才能链接到调试配置)。
  • 我可以在项目中添加绝对路径,但这意味着该项目不可移植。
  • 我可以添加libpng目录(例如),然后在链接器输入中输入Debug\libpng.lib,但是找不到符号。由于\,它假定它是一个相对路径。

我当前的解决方案是将所有需要的库复制到当前项目的解决方案目录中;我什至可以在那里硬链接它们,但这似乎很愚蠢。

我可以做些什么来保持我的项目可移植性,并引用绝对的包含/lib 路径每个配置

(例如,能够故意将路径放在 .suo 或 .user 文件中会很棒。)

【问题讨论】:

    标签: c++ visual-studio linker libraries


    【解决方案1】:

    如果要添加库的相对路径,请在它们前面加上“.\”以从基础项目目录开始;

    ".\Lib\Debug\libpng.lib"
    

    或“..\”来引用父目录。

    "..\Lib\Debug\libpng.lib"
    

    请注意,如果您的库位于父目录的父目录中,那么您可以将“..\”引用链接在一起:

    "..\..\Lib\Debug\libpng.lib"
    

    【讨论】:

    • 我已经使用了相对路径,我想知道如何使用绝对路径,而不是基于每个项目。
    • 您可以通过导航到“工具 -> 设置 -> 项目和解决方案 -> VC++ 目录”在 Visual Studio 全局设置中设置绝对库路径。事实证明,这对于实现常用 SDK 的项目来说是相当普遍的做法,这些 SDK 可以安装到不同计算机上的不同位置。这就是你在说的吗?如果是这样,我会重新发布作为答案。
    • 这已被 VS2010 删除,它也不允许每个配置目录,因此仍然无法使用静态链接。
    猜你喜欢
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多