Intereting Posts
Минимизируйте приложение, когда нажимаете кнопку «Назад». Царство закрывается Связать объект с маркером (google map v2) Загрузите несколько файлов с индикатором выполнения в ListView Android Почему мое векторное масштабируемое масштабирование не ожидается? Android String Ресурс не найден Исключение Как изменить текст TextView на изменение текста EditText? Превышен дневной лимит неиспользуемого использования. Для продолжения использования требуется регистрация Android обнаруживает, что видео с URL-адреса находится в портретной ориентации Как закрепить файл APK в Android? Есть ли список разрешений экрана для всех Android-телефонов и планшетов на базе Android? Android: захват возврата активности Android SDK не найден. Убедитесь, что он установлен. Если он не находится по умолчанию, установите переменную среды ANDROID_HOME SharedPreferences.getInt () приводит к ClassCastException – почему? Как я могу заставить диспетчер загрузки перезаписать существующий файл вместо того, чтобы переименовывать файл в android

Использование Android NDK и C ++

Я получил пример проекта 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.

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

 extern "C" { JNIEXPORT ... } 

Вы должны иметь возможность сделать версию, которая будет работать как на C, так и на C ++, обернув блок extern в #if :

 #ifdef __cplusplus extern "C" { #endif JNIEXPORT ... #ifdef __cplusplus } #endif 

Java_com_test_testActivity_doЧто-то должно быть extern «C».

Попробуйте положить extern «C» вокруг экспортированных определений функций.