我有一个可以用-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个?
答案 0 :(得分:2)
如果符号名称和目标文件名不同,那么您可以在其自己的库中至少拥有所有32位代码和所有64位代码。当然,makefile可以轻松地创建一个名为xxA.o
和xxU.o
的对象文件,或类似于ASCII与UNICODE变体的对象文件。
如果符号名称相同(例如,它们将用于函数,例如,不接受参数并具有相同的返回类型或extern "C"
函数,因为它们不是名称错误的基于参数),那么你就不能使用这个方法[或者有多个库来提供这个功能,所以提供一长串的库也行不通。]