存档两个.a文件

时间:2013-05-24 21:32:36

标签: c++ object c++11 ar

我有一个可以用-D UNICODE编译的C ++项目。

当我在没有定义的情况下编译它时,它会创建一堆目标文件,然后使用以下命令将其添加到.a存档文件中:ar.exe rcs Cpplib.a *.o

然后我用它来编译它并使用:ar.exe rcs CpplibU.a *.o

归档对象

其中U表明存档是Unicode存档。

有没有办法可以将两个.a文件合并到一个存档中,以便我可以链接到该文件而不必链接到:

Cpplib_x32.a Cpplib_x64.a Cpplib_x32U.a Cpplib_x64U.a

现在我不介意单独链接到x32和x64,但必须链接到2 x64和2 x32有点烦人。

我想知道是否有一种方法可以将x32和x64存档组合在一起,或者组合非Unicode和Unicode存档。我不需要两者。或者,或者。

任何想法或者我不得不链接到所有4个?

1 个答案:

答案 0 :(得分:2)

如果符号名称和目标文件名不同,那么您可以在其自己的库中至少拥有所有32位代码和所有64位代码。当然,makefile可以轻松地创建一个名为xxA.oxxU.o的对象文件,或类似于ASCII与UNICODE变体的对象文件。

如果符号名称相同(例如,它们将用于函数,例如,不接受参数并具有相同的返回类型或extern "C"函数,因为它们不是名称错误的基于参数),那么你就不能使用这个方法[或者有多个库来提供这个功能,所以提供一长串的库也行不通。]