c++ - 使用 C++ 合并静态库时出现 undefined reference 错误

标签 c++ linker mingw static-libraries unix-ar

假设我的应用程序中需要 libA.a。 libA.a 需要 libB.a 本身,我需要在我的应用程序中静态链接到它们。为了消除这种情况,我将这两个(libA.a 和 libB.a)合并为 libAB.a(这是使用 ar 工具完成的)。还没有问题。

当我想运行我的应用程序(链接到 libAB.a)时,编译器开始提示对 libA 中使用 libB 的方法的 undefined reference !除了 libAB.a 之外,当我将应用程序链接到 libB.a 时,一切正常!根据文件大小,libAB.a 似乎是 libA 和 libB 合并的结果,但在编译时似乎只有 libA 可用于应用程序。

这是合并命令:

ar rcus -v ../lib/libPocoFoundationmtd.a @"Foundation.txt" "c:/MinGW/lib/libiphlpapi.a"

Foundation.txt 包含将创建 .a 文件的 .o 文件列表。 这是我的应用程序的编译命令:

g++ -o ./Debug/exe1 @"exe1.txt" -L. -Lc:/poco/lib/  -lPocoFoundationmtd

最佳答案

看来我找到了解决办法!我在合并的 .a 文件中将 .o 和 .a 文件混合在一起(目标文件 + 静态库)。我做了 ar-x 来提取 .a 文件的内容,然后我将所有 .o 文件合并到一个最终的 merged.a 库中

抱歉耽搁了:)

关于c++ - 使用 C++ 合并静态库时出现 undefined reference 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18680179/

相关文章:

c++ - 二叉查找树,中序遍历,Step 3 逻辑辅助

c++ - 时间以微秒为单位询问,但以秒为单位

windows-10 - 为什么 make.exe 尝试在 Windows 上运行/usr/bin/sh?

c++ - Eclipse CDT MinGW 路径变量

bash - 在 Bash shell 中使用相对路径和 'PATH' 环境执行程序

c++ - 预处理器定义在 VS2019 C++ 中不起作用

c++ - MySQL 连接器 C++ 64 位从 Visual Studio 2012 中的源构建

C++ - 构建静态库问题

Java 库,其依赖项是通过实现应用程序提供的

c++ - 使用 directX 和 Visual Studio 2010 的链接器错误