我有一个问题,我想要一个我的代码的静态库,因为我经常使用这些代码。它是 c++(否则共享将是另一种选择)。但是该代码取决于其他静态库。因此,我发现我无法将静态库链接到另一个库。我找到了如何将两个“ar”静态库合并为一个。因此,我尝试了一个测试,但它不起作用,我想知道为什么以及如何正确地做。
我有两个静态库,每个库都有一个标头(未链接但用于实现),它的源具有一个简单的函数返回一些东西。Lib1 有一个函数,lib2 有一个依赖于 lib1 的函数,如果我链接 lib1 和 lib2,我的可执行文件 3.exe 会出现链接错误。lib1 的函数未引用。使用链接的内容,我自己编写了一个批处理脚本,它提取库的所有对象并快速将其添加到输出库中:
@ECHO OFF
SET ar="C:\Programme\CodeBlocks\MinGW\bin\ar.exe"
FOR %%i IN (%1) DO SET SPath=%%~di%%~pi
cd \
cd D:
cd %SPath%
SET output="%SPath%output.a"
del %output%
:top
IF (%1) == () GOTO end
del "%SPath%*.o"
ar x %1
ar q %output% *.o
SHIFT
GOTO top
:end
del *.o
ar t %output%
script.bat libtest1.a libtest2.a
它的输出看起来很可靠:
D:\
D:\CodeBlocks Workspace\lib test\*.o konnte nicht gefunden werden
ar: creating D:\CodeBlocks Workspace\lib test\output.a
main1.o
main2.o
我链接到输出而不是 lib1 和 lib2,但仍然未引用 lib1 的功能。
那么该怎么办 ?我不想一直包含整个代码。