Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование динамических библиотек

279
04 января 2008 года
bave
456 / / 07.03.2004
Вообщем написал библиотеку, откомпилировал её так:
g++ -fPIC -c igate.cpp -o igate.o
g++ -shared -o libigate.so igate.o
В результате получил библиотеку:
libigate.so
Теперь пытаюсь её использовать:
1. сначало подгружаю её используя dlopen(libname, flags). Библиотека подгружается без
проблем никаких ошибок.
2. Но вот когда пытаю получить указатель функции, получаю ошибки, например:
после выполнения dlsym(hGate, "httplookup") - dlerror возвращает: "./libigate.so: undefined symbol httplookup". И такая проблема с любой функцией.
----------------------------------------------
Попробовал даже для проверки простенькую тестовую библиотеку написать:
типа:
1. testdl.cpp:
int tester(int i) { return i; }
2. g++ -fPIC -c testdl.cpp -o testdl.o
g++ -shared -o libtestdl.so testdl.o
3. уже в программе:
hLib = dlopen("./libtestdl.so", RTLD_LAZY);
lpfnTester = dlsym(hLib, "tester");
И опять та же фигня: ./libtestdl.so: undefined symbol tester
--------------------------------------------------
Как же тогда имена функций указывать надо?
Или может я библиотку не правильно собираю...
260
04 января 2008 года
Ramon
1.1K / / 16.08.2003
компилер ++, а объявление экспортируемой ф-ции extern "C" содержит?
279
05 января 2008 года
bave
456 / / 07.03.2004
Уже понял, спасибо.
Добавил, extern "C" - заработало.
------------------------------------
Сейчас только остались проблемы с функциями включеннными в пространства имён (namespace). Для них как имена указывать не понятно - возможно придётся избавляться от использования пространств имён.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог