2013-06-08 7 views
0

У меня есть библиотека ac, которая путем компиляции it.It создаст .so-библиотеку, которая будет использоваться в другом проекте c с одним из файлов заголовков (xh), который используется для доступа к библиотечная функция в .so файле в вашем проекте. очень просто в моем проекте. Включите x.header и дайте файл -lx.so и путь к исходному каталогу библиотеки (файла .so), чтобы затмить C-компоновщик и скомпилировать мой проект.Использование библиотеки c для проекта C++ в eclipse

Вопрос в том, что: Как я могу использовать эту библиотеку c с моим проектом C++, как в c-проекте, описанном выше в eclipse?

Я сделал то же самое в своем C++-коде в eclipse и добавил .so-файл в мою библиотеку компоновщика C++, также включил в него путь источника библиотеки. после этого я добавляю заголовок и пытаюсь использовать библиотечную функцию, но eclipse дает ошибку «неопределенная ссылка на функции ...» и не может скомпилировать код.

спасибо.

+0

Просьба показать фактические ошибки и командную строку компоновщика. Вы уверены, что используете 'extern 'C" 'при включении заголовка? –

ответ

2

Чтобы использовать любой C-скомпилированный код на C++, вам необходимо обернуть его extern "C" { ... } в заголовке [и если вы планируете его компилировать в компиляторе C++, а также сам контент библиотеки).

Чтобы убедиться, что код может быть скомпилирован с ОБЕИХ C и C++, вы можете использовать:

#idfef __cplusplus 
extern "C" { 
#endif 

int func(double d); 

... 

#idfef __cplusplus 
} // end of extern "C" 
#endif 

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

+0

Кроме того, если вы не можете или не должны изменять заголовки другого проекта, вы можете просто использовать extern «C» для включения заголовка в файлы C++. –

+0

Спасибо @Mats Я также узнал, что он называется linkag между языками, и вот ссылка [link] (http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom .ibm.xlcpp8a.doc% 2Flanguage% 2Fref% 2Fcplr020.htm) – mjr

Смежные вопросы