3

我有一个问题,我想要一个我的代码的静态库,因为我经常使用这些代码。它是 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 的功能。

那么该怎么办 ?我不想一直包含整个代码。

4

0 回答 0