繁体   English   中英

Android NDK C ++ helloworld程序崩溃

[英]Android NDK c++ helloworld program crash

作为Android NDK入门者,我尝试运行在ndk网站上找到的helloJni示例: https : //developer.android.com/ndk/samples/sample_hellojni.html

我设法使用项目中提供的c代码编译并运行程序。 但是,我想将代码转换为等效的C ++。 花了数小时没有成功。

我做了什么:

重命名jni / hello-jni.c-> jni / hello-jni.cpp

在jni / android.mk中更改

LOCAL_SRC_FILES := hello-jni.c

LOCAL_SRC_FILES := hello-jni.cpp

用jni / hello-jni.cpp中的以下c ++代码替换c代码

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

JNIEXPORT jstring JNICALL
  Java_com_example_hellojni_HelloJni_stringFromJNI
  (JNIEnv *env, jobject obj)
  {
        return env->NewStringUTF("Hello from C++ over JNI!");
  }

构建成功并输出

/home/wenchao/Projects/shared/android-ndk-r10e/ndk-build all 
Android NDK: WARNING: APP_PLATFORM android-21 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml    
[arm64-v8a] Install        : libhello-jni.so => libs/arm64-    v8a/libhello-jni.so
[x86_64] Install        : libhello-jni.so => libs/x86_64/libhello-jni.so
[mips64] Install        : libhello-jni.so => libs/mips64/libhello-jni.so
[armeabi-v7a] Install        : libhello-jni.so => libs/armeabi-v7a/libhello-jni.so
[armeabi] Install        : libhello-jni.so => libs/armeabi/libhello-jni.so
[x86] Install        : libhello-jni.so => libs/x86/libhello-jni.so
[mips] Install        : libhello-jni.so => libs/mips/libhello-jni.so

18:09:12 Build Finished (took 412ms)

但是在我的设备上

Unfortunately, HelloJni is stopped.

而且很奇怪,Logcat中没有输出。 Logcat完全空白。 (不过,这可能是我需要解决的单独问题)

我根本不知道如何调试:(

得到它了。

我们需要外部的“ C”包装环绕c ++代码

#include <string.h>
#include <jni.h>
extern "C" {


JNIEXPORT jstring JNICALL
  Java_com_example_hellojni_HelloJni_stringFromJNI
  (JNIEnv *env, jobject obj)
  {
    return env->NewStringUTF("Hello from C++ over JNI!");
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM