смешивание кода C & C ++ в статической библиотеке - PullRequest
0 голосов
/ 29 августа 2011

Я пытаюсь создать статическую библиотеку, которая содержит функции C и C ++, а затем использовать эту библиотеку в среде C. Согласно Используя библиотеку C ++ в коде C , я обертываю функции C вокруг функций C ++.

Makefile для библиотеки использует "ar -rvs libNAMEX.a $ (OBJECTS)", где OBJECTS содержит объектные файлы, скомпилированные gcc или g ++ в зависимости от типа (версия GCC 4.4.1).

Я не сталкиваюсь с ошибками при сборке библиотеки. Но когда я пытаюсь скомпилировать файл C (с кросс-скомпилированной версией GCC 4.5.1), который использовал библиотеку: "gcc -L [PATH TO libNAMEX.a] -lNAMEX ... c_source.c", это дает ошибки, связанные с расширениями C ++ (т. е. «неопределенная ссылка на operator new(unsigned long)", "undefined reference to std :: allocator :: ~ allocator () '»).

Есть ли способ обойти эту проблему?

1 Ответ

3 голосов
/ 29 августа 2011

Использовать g ++ в качестве компоновщика:

gcc my_c_file.c -c
g++ my_c_file.o -L blabla -lblabla
...