У меня есть проект C ++, который может быть скомпилирован с -D UNICODE
,
Когда я компилирую его без этого Define, он создает кучу объектных файлов, которые я затем добавляю в архивный файл .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-битный код в собственной библиотеке. И, конечно, make-файл может легко создать объектный файл с именем xxA.o
а также xxU.o
или что-то подобное для варианта ASCII против UNICODE.
Если имена символов совпадают (например, для функций, которые, например, не принимают параметр и имеют одинаковый тип возвращаемого значения, или extern "C"
функции, так как они не искажены по имени на основе параметров), то вы не можете использовать этот метод [или иметь несколько библиотек, которые предоставляют эту функцию, поэтому предоставление целого длинного списка библиотек также не будет работать].
Других решений пока нет …