【发布时间】:2013-05-24 21:32:36
【问题描述】:
我有一个可以用-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 个?
【问题讨论】:
-
"而不是链接到:" 你怎么能链接到所有这些呢?它们是相互排斥的,是吗?如果您正在编译 32 位,则无法链接到使用 64 位编译构建的库。如果你正在为 Unicode 编译,链接到非 Unicode 编译库是危险的。就像在发布版本中链接到为调试而编译的库一样,反之亦然。
-
不,先生。我链接到所有这些,Mingw/Codeblocks 允许它。它只使用适合的那个。换句话说,如果我正在编译一个没有 Unicode 的项目,Mingw 不知何故知道使用非 Unicode 项目并忽略其他所有项目,而不会使我的 exe/lib 膨胀或引发编译/运行时错误。它也适用于 x32 /x64 的..我不知道如何编译和运行得很好..我只是不想链接到那么多..而是链接到一个包含所有四个或两个包含其 unicode 对应项的.如果我编译 x32 程序而不链接 x64,它将无法编译。
-
"我不知道它是如何编译和运行的。" 如果你不知道它是如何工作的,那么你就不知道 它的工作原理。您所知道的就是您已经尝试过,并且没有任何明显损坏。我并不是说 GCC 无法处理它。我是说,根据我的经验,链接到使用 不同 系统
#defines编译的代码通常会导致错误。 -
这是一个打字错误。我无法编辑评论,因为它说 cmets 只能在 5 分钟标记之前编辑。我的意思是说:如果我在没有 x32 库的情况下编译 x32,它不会编译。或者,如果我在不使用 x64 库的情况下编译 x64(反之亦然),它将无法编译。没有 Unicode 库的 Unicode 也不会编译。带有 Unicode 库的非 Unicode 将无法编译。所以是的,编译器处理得很好。