0

I have a C++ project that can be compiled with -D UNICODE.

When I compile it without that Define, it creates a bunch of object files which I then add to a .a archive file using the command: ar.exe rcs Cpplib.a *.o

Then I compile it with that define and archive the objects using: ar.exe rcs CpplibU.a *.o

where the U states that the archive is a Unicode one.

Is there a way I can combine both .a files into ONE archive so that I can link to that instead of having to link to:

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

Now I don't mind linking to x32 and x64 separately but having to link to 2 x64's and 2 x32's is kinda annoying.

I want to know if there is a way I can either combine the x32 and x64 archives OR combine the Non-Unicode and Unicode archives. I don't need both. Either, Or.

Any ideas or am I stuck having to link to all 4?

4

1 に答える 1

2

シンボル名とオブジェクト ファイル名が異なる場合、少なくともすべての 32 ビット コードとすべての 64 ビット コードを独自のライブラリに含めることができます。そしてもちろん、makefile は、ASCII と UNICODE のバリアントに対応するxxA.oandまたはそのようなオブジェクト ファイルを簡単に作成できます。xxU.o

シンボル名が同じである場合 (たとえば、パラメーターをとらず、パラメーターにextern "C"基づいて名前マングルされていないため、同じ戻り値の型または関数を持つ関数の場合)、次のことができます。 'このメソッドを使用しないでください[または、その機能を提供する複数のライブラリがあるため、ライブラリの長いリスト全体を提供しても機能しません]。

于 2013-05-24T21:46:59.150 に答える