JNI Java-to-C ++ вызов работает при сборке в Eclipse, но не при сборке через командную строку - PullRequest
0 голосов
/ 10 декабря 2011

Вызовы функций реализованы в файле .so. Когда я строю из командной строки, я получаю UnsatisfiedLinkError, когда код пытается вызвать нативные функции из Java (C-to-Java работает правильно). Самым странным является то, что, когда я прервал вызовы и получил указатель на них, указатели действительны, тогда UnsatisfiedLinkError все еще происходит.

Полагаю, главный вопрос в том, что Eclipse делает из командной строки (или наоборот)? Я в растерянности, и мне нужно, чтобы это работало, потому что другие разработчики и сервер сборки не способны строить через Eclipse.

Другой вопрос: как найти и вызвать функцию при использовании этого механизма (в Android)? Я прочитал немного информации об этом, но ничего, что помогло мне решить эту проблему.

Поскольку он работает в Eclipse, я уверен, что мои соглашения об именах JNI верны.

Я смотрел в Интернете достаточно широко, но, похоже, не могу получить хороший ответ на это.

К вашему сведению, файл .so включен в APK-файлы (которые выглядят практически одинаково) и является единственным файлом .so.

1 Ответ

1 голос
/ 12 декабря 2011

Как вы компилируете свои .so файлы?Вы передаете флаг -fvisibility=hidden в g ++ (при условии, что вы используете g ++ для компиляции)?И -fPIC?

...