LINUX.ORG.RU

C++ и *.so


0

0

При компиляции программы, использующей библиотеку MyLib.so: g++ -lMyLib main.cpp происходит ошибка: undeclared: myfunc() Эта функция в библиотеке. Help!


Может быть нужно назвать файлик libMyLib.so?

Flogger_d
()

Так наверно это ошибка не линкера а компилятора.
Сделай в main.cpp декларацию своей функции.

OlegY
()
Ответ на: комментарий от unDEFER

Ах, да при компиляции, тогда послушайте OlegY.

unDEFER ★★★★★
()
Ответ на: комментарий от butterfly

А библиотека скомпилирована с ключом -share?

anonymous
()

заголовочный файл должен выглядеть следующим образом:

#ifdef __cplusplus extern "C" { #endif

/* ... */ void myfunc (void); /* ... */

#ifdef __cplusplus } #endif

anonymous
()
Ответ на: комментарий от anonymous

C++ и *.so

Подскажите где можно найти мануалы по написанию С++ под Linux и работе с библиотеками.

Смущает одна вещь: в доках к библиотеке сказано, что она на С++, зачем тогда extern "C"?

И ещё вопрос: Подключаю к программе TheHeader.h файл в нём используется константа(define), объявленная в другом *.h файле, подключаемом из TheHeader.h, компилятор ругается: undeclared ...

freddy
() автор топика
Ответ на: C++ и *.so от freddy

специфичного тут почти ничего нет. Вам нужно читать доки по С/C++. Там всё есть и про extern "C" и про #define и про всё другое.

Открывать модули вручную можно с помощью либы dl. man dlopen. Если не вручную, то нужно включить в программу хедеры от нужной вам либы и задать ключ для линкера -lmylib -L<...>.

butterfly
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.