LINUX.ORG.RU

dlopen + dlsym = Undefined symbol 'my_func'


0

0

Здраствуйте. Использую пример из man dlopen (на opennet.ru). Есть бибилиотека, у казываю к ней полный путь. dlopen открывает возвращает не NULL handler. dlsym "говорит" Undefined symbol "my_func". Еще не все, компилю с опцией -rdynamic, но без -ldl. Простой пример(все из того же мана) без -ldl работает. При компиляции с -ldl компилятор (g++ (GCC) 3.2.2 [FreeBSD] 20030205 (release)) "выдает" : g++ -c client.cpp -ggdb -I/usr/local/include -I/usr/local/firebird/include -rdynamic -I include/ g++ -o client -L ./lib -lclient_poligon_mon ClientSocket.o Socket.o client.o -ggdb -L/usr/local/lib -lnetsnmp -lnetclass -lcrypto -lcrypt -L/usr/local/firebird/lib -lgds -ldl -lc_r -ggdb -I/usr/local/include -I/usr/local/firebird/include -rdynamic -I include/ /usr/bin/ld: cannot find -ldl gmake: *** [client] Ошибка 1 Все что могу сказать + еще что в библиотеке есть точно my_func ( в mc при F3 видно ), да и я ее сам собирал, уверен что есть. Библиотеку пробовал strip'ать : результат тот же самый. Подскажите пожалуйста в чем моя проблема, и где "копать". Заранее большое спасибо.

anonymous

Если my_func написана на C++ то объяви ее как extern "C". C++ добавляет к имени функции дополнительные символы поэтому dlsym ее не находит.

asso_w
()

Спасибо большое! Помогло :)

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