在Visual Studio中如何将一个文件夹中的所有.lib文件包含进来?

17

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

在编译时是否有一种方式可以包含所有.lib文件?

我已经将lib目录作为链接器的附加输入给出,但它仍要求包括单个的.lib文件。是否有一个选项来表示在这个文件夹中包括所有的.lib

5个回答

22

bigD的答案是正确的。

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

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

在该框中,您只需键入:

"[libFolder]\*.lib"
你可以通过空格分隔位置来拥有多个位置,就像这样:

You can have multiple locations by separating locations with a space, like so:

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

这比逐个添加它们要容易得多。不确定是否包含了我不需要的库。+1 为我节省了一些时间,让我更好地进行编程。 - Landon Poch
1
你也可以在这行代码中添加 /VERBOSE:UNUSEDLIBS 以获取未使用的任何库。 - Joshua Maiche

6
你只需要写 "someFolder/*.lib",指定要链接的库文件即可。

4
据我所知,没有办法做到这一点:您的选择是要么在链接器 - > 输入 - > 附加依赖项中包含每个lib,要么通过源文件中的#pragma指令包含libs,例如添加:
#pragma comment(lib, "some_lib.lib")
如果项目是解决方案的一部分,则可以将它们选为“项目依赖项”,最简单的方法是使用pragma,因为您只需要执行一次即可同时进行调试和发布。例如,您可以对lib目录运行目录列表,然后将指令的其余部分复制并粘贴到源文件中。此外,要获取静态库的符号列表,您可以在lib文件上运行dumpbin工具(带/ALL选项)。

近期的Visual Studio版本有没有变化?此外,编写一个预构建脚本来扫描文件夹不是应该可以实现吗? - danijar
我正在使用VS2015,今天我能够进入Linker-> Input-> Additional Dependencies,并添加[folder]* .lib,这对我很有效。 - RomSteady

1
这将输出一个包含所有.lib文件的文件。您可以复制粘贴或根据自己的需求进行修改。
另存为批处理文件。
for %%f in (*.lib) DO echo|set /p=%%~f >> alllibs.txt 

0

虽然你在使用Visual Studio,但如果你使用命令行,你可以将所有库文件放在一个链接器响应文件中,并在链接阶段时使用@作为独立选项进行引用。

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

此链接选项无法从Visual Studio开发环境中使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接