Компилировать общий объект C с файлами C ++ - PullRequest
1 голос
/ 10 октября 2019

У меня есть общий объект C (.so файл), и я могу скомпилировать его только с помощью gcc, потому что он использует только функции C, такие как strcpy_s.

И у меня есть код C ++, который содержит некоторые библиотеки только C ++.

Можно ли скомпилировать совместно используемый объект с помощью gcc, а мой код - с помощью g ++?

1 Ответ

2 голосов
/ 10 октября 2019

Конечно, вы можете связать вашу C ++ программу с вашей общей библиотекой C. Просто убедитесь, что вы сообщаете компилятору C ++, что функции в этой библиотеке имеют связь C, добавляя extern "C" { ... } вокруг функций в заголовочном файле вашей библиотеки C:

shared_c_lib.h

#ifdef __cplusplus
extern "C" {
#endif

// all your C functions declarations/prototypes

#ifdef __cplusplus
} // extern "C"
#endif
...