【发布时间】:2011-11-12 09:51:41
【问题描述】:
我正在尝试用另一个项目构建一个项目。那里有很多库,我不确定所需的未引用符号在哪里。
有没有办法在编译时包含所有.lib 文件?
我已将lib 目录作为链接器的附加输入,但它要求包含单个.lib 文件。是否可以选择将所有.libs 包含在此文件夹中?
【问题讨论】:
标签: visual-studio visual-c++ static-linking
我正在尝试用另一个项目构建一个项目。那里有很多库,我不确定所需的未引用符号在哪里。
有没有办法在编译时包含所有.lib 文件?
我已将lib 目录作为链接器的附加输入,但它要求包含单个.lib 文件。是否可以选择将所有.libs 包含在此文件夹中?
【问题讨论】:
标签: visual-studio visual-c++ static-linking
bigD 的回答是对的。
至少在 VS 2012 中,您实际执行此操作的地方是右键单击项目,然后继续:
属性 > 配置属性 > 链接器 > 命令行 > 附加选项
在该框中,您只需键入:
"[libFolder]\*.lib"
您可以使用空格分隔多个位置,如下所示:
"[libFolder1]\*.lib" "[libFolder2]\*.lib"
【讨论】:
您应该能够编写“someFolder/*.lib”,您必须在其中指定要链接的库
【讨论】:
AFAIK 没有办法做到这一点:你的选择是
在链接器中包含每个库->输入->附加依赖项
通过编译指示在源文件中包含库,即添加
pragma comment(lib, "some_lib.lib" )
执行此操作的最简单方法是使用编译指示,因为您只需为调试和发布执行一次。例如,您可以列出您的 lib 目录,然后将指令的其余部分复制并粘贴到您的源文件中。
此外,要获取静态库的符号列表,您可以在 lib 文件上运行 dumpbin 工具(AFAIR 使用 /ALL 选项)。
【讨论】:
这将输出一个文件将列出所有 .lib 文件。您可以根据需要复制粘贴或修改。
另存为批次。
for %%f in (*.lib) DO echo|set /p=%%~f >> alllibs.txt
【讨论】:
虽然您在 Visual Studio 中,但如果您使用命令行,则可以将所有库放在 linker response file 中,并在链接阶段使用 @ 将其作为独立选项引用。
不幸的是,根据上面的链接,
此链接器选项在 Visual Studio 开发中不可用 环境。
【讨论】: