2013-09-12 3 views
0

Я пытаюсь динамически загружать определенную общую библиотеку, используя dlopen() в ленивом режиме. В общей библиотеке, конечно, неразрешенные символы, но ленивый режим должен игнорировать их. Он игнорирует их в Linux, и разрешение фактически происходит, как только символы используются во время выполнения.dlopen() не работает на Android, но работает на Linux

Но в Android, это не сработает, хотя я использую ленивый режим, dlopen() терпит неудачу из-за неразрешенных символов.

это код, я говорю о

retval = dlopen(LOADLIB, RTLD_LAZY); 

Что происходит?

+0

Он используется в нескольких местах в каркасе Android, поэтому я предполагаю, что это не бездействие в Android. [Этот вопрос] (http://stackoverflow.com/questions/10785740/dynamic-c-lib-for-android-2-2-error-symbol-not-found) звучит аналогично и упоминает другие специфические вещи Android. – zapl

ответ

0

Обычно бионический линкер ищет общие библиотеки в каталоге/lib и в вендоре/lib. Вы можете проверить, установлен ли путь LD_LIBRARY для включения папки, в которую находится ссылка lib, которую вы пытаетесь установить.

+0

В библиотеке обнаружена ошибка об неразрешенном символе в целевой библиотеке. – stdcall

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