假设我的应用程序中需要 libA.a。libA.a 需要 libB.a 本身,我需要在我的应用程序中静态链接到它们。为了消除这种情况,我将这两个(libA.a 和 libB.a)合并为 libAB.a(这是使用 ar 工具完成的)。还没有问题。
当我想运行我的应用程序(链接到 libAB.a)时,编译器开始抱怨对 libA 中使用 libB 的方法的未定义引用!除了 libAB.a 之外,当我将 app 链接到 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