试图合并两个静态库

时间:2012-10-17 23:01:58

标签: c++ static-libraries ar

我遇到的问题是我想拥有代码的静态库,因为我经常使用代码。它是c ++(否则共享将是另一种选择)。但该代码依赖于其他静态库。由于这一点,我发现我无法将静态库链接到另一个。我找到了How to merge two "ar" static libraries into one。由于我尝试了测试,但它不起作用,我想知道为什么以及如何做对。

我有两个静态库,每个库都有一个标题(没有链接但是用于实现),它的源代码有一个简单的函数返回。 Lib1有一个函数,lib2有一个函数取决于lib1,如果我链接lib1和lib2,我的可执行3.exe会得到一个链接错误。 lib1的功能未被引用。 通过链接的内容,我自己写了一个批处理脚本,它提取了lib的所有对象并快速将它添加到输出lib:

@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的功能。

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

0 个答案:

没有答案