[英]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.