【问题标题】:In visual studio how to include all .libs in a folder在 Visual Studio 中如何将所有 .libs 包含在一个文件夹中
【发布时间】:2011-11-12 09:51:41
【问题描述】:

我正在尝试用另一个项目构建一个项目。那里有很多库,我不确定所需的未引用符号在哪里。

有没有办法在编译时包含所有.lib 文件?

我已将lib 目录作为链接器的附加输入,但它要求包含单个.lib 文件。是否可以选择将所有.libs 包含在此文件夹中?

【问题讨论】:

    标签: visual-studio visual-c++ static-linking


    【解决方案1】:

    bigD 的回答是对的。

    至少在 VS 2012 中,您实际执行此操作的地方是右键单击项目,然后继续:

    属性 > 配置属性 > 链接器 > 命令行 > 附加选项

    在该框中,您只需键入:

    "[libFolder]\*.lib"
    

    您可以使用空格分隔多个位置,如下所示:

    "[libFolder1]\*.lib" "[libFolder2]\*.lib"
    

    【讨论】:

    • 这比单独添加它们要容易得多。不确定我是否包含了我不需要的库。 +1 为我节省了一些时间。
    • 您也可以在该行添加 /VERBOSE:UNUSEDLIBS 以获取任何尚未使用的库。
    【解决方案2】:

    您应该能够编写“someFolder/*.lib”,您必须在其中指定要链接的库

    【讨论】:

      【解决方案3】:

      AFAIK 没有办法做到这一点:你的选择是

      • 在链接器中包含每个库->输入->附加依赖项

      • 通过编译指示在源文件中包含库,即添加

      pragma comment(lib, "some_lib.lib" )

      • 如果项目是解决方案的一部分,您可以将它们选为“项目依赖项”

      执行此操作的最简单方法是使用编译指示,因为您只需为调试和发布执行一次。例如,您可以列出您的 lib 目录,然后将指令的其余部分复制并粘贴到您的源文件中。

      此外,要获取静态库的符号列表,您可以在 lib 文件上运行 dumpbin 工具(AFAIR 使用 /ALL 选项)。

      【讨论】:

      • 最近的 Visual Studio 版本有变化吗?此外,不应该编写一个预构建脚本来扫描文件夹吗?
      • 我正在使用 VS2015,我能够进入 Linker->Input->Additional Dependencies 并添加 [folder]*.lib 并让它今天为我工作。
      【解决方案4】:

      这将输出一个文件将列出所有 .lib 文件。您可以根据需要复制粘贴或修改。

      另存为批次。

      for %%f in (*.lib) DO echo|set /p=%%~f >> alllibs.txt 
      

      【讨论】:

        【解决方案5】:

        虽然您在 Visual Studio 中,但如果您使用命令行,则可以将所有库放在 linker response file 中,并在链接阶段使用 @ 将其作为独立选项引用。

        不幸的是,根据上面的链接,

        此链接器选项在 Visual Studio 开发中不可用 环境。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-22
          • 2013-03-29
          • 2010-10-19
          • 1970-01-01
          • 2015-01-13
          • 1970-01-01
          • 1970-01-01
          • 2016-11-10
          相关资源
          最近更新 更多