смешивание с и с ++ - PullRequest
       24

смешивание с и с ++

0 голосов
/ 07 января 2012

У меня есть пара вопросов по поводу смешивания кода:

  1. полный проект, основанный на c, если я хочу использовать библиотеку c ++, то я создаю оболочку вокруг нее с чистым cкод, а затем построить эту общую библиотеку, мне нужно перейти на g ++ вместо компилятора gcc?

  2. что если оболочка скомпилируется как статическая библиотека с библиотекой?

1 Ответ

6 голосов
/ 07 января 2012

Мне интересно узнать, какую библиотеку вы используете, у которой есть только версия C ++, а не чистый интерфейс C.

Независимо от того, что вы собираетесь вызывать код C ++, ваша оболочка будет считаться C ++, и ее нужно будет скомпилировать с помощью g ++. Это связано с name-mangling , и вам нужно будет иметь возможность вызывать те функции, которые предоставляет библиотека c ++. Вы можете смотреть на них с readelf -s.

Функции, которые предоставляет ваша обертка, однако, должны быть отмечены extern "C", чтобы их имена не были искажены. Тогда вы сможете вызывать их из вашего приложения на чистом C.

Статическая и общая библиотека здесь не должны иметь значения. Это просто вопрос правильных генерируемых символов, чтобы связывание могло происходить.

...