Использование Android NDK и C ++ - PullRequest
6 голосов
/ 13 марта 2011

Я получил пример проекта HelloJni, который использует файл C для собственного кода.Я не смог получить простые примеры работы с C ++.Возьмите следующий код JNI:

#include <jni.h>
#include <string.h>

JNIEXPORT void JNICALL Java_com_test_testActivity_doSomething(JNIEnv * env, jobject obj)
{

}

Если у меня есть код в файле .c, он работает нормально.Если я изменяю расширение на .cpp, оно прекрасно компилируется, но при запуске взрывается (принудительное закрытие).Поскольку подпись библиотеки и метода одинакова, я не подозреваю, что проблема на стороне Java.

Ответы [ 3 ]

10 голосов
/ 13 марта 2011

Возможно, вам понадобится окружить ваш код блоком extern "C":

extern "C" {

    JNIEXPORT ...

}

Вы сможете создать версию, которая будет работать как на C, так и на C ++, обернув внешний блок в * 1005.*:

#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT ...

#ifdef __cplusplus
}
#endif
1 голос
/ 13 марта 2011

попробуйте поместить extern "C" вокруг определения экспортируемой функции.

1 голос
/ 13 марта 2011

Java_com_test_testActivity_doSomething должен быть внешним "C".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...