繁体   English   中英

Android原生C++函数调用导致应用程序崩溃

[英]Android native C++ function call cause application crash

我有 Android 应用程序,我需要在其中使用 C++ 代码。 但我意识到,我在调用 C++ 函数时遇到了问题。 我读过一些关于它的东西并试图写一些东西,我认为它可以工作。 这是我的代码:

private native int test(int a);
private void process() {
    int ret=test(5);
    Toast.makeText(this, String.valueOf(ret), Toast.LENGTH_LONG).show();
}

我的 C++ 代码是:

#include <jni.h>
extern "C"
JNIEXPORT jint JNICALL
Java_com_example_woodem_woodem_1opencvgrains_Main_test(JNIEnv *env, jint a) 
{
    return a*a;
}

当然,我的实际函数要复杂得多,我需要传递大约 6 个参数,但我希望,这可以说明。

注意:即使此代码对我也不起作用。

我的应用程序在调用 process() 后立即崩溃。 你能不能给我建议,我做错了什么? 编译器什么也没告诉我,我也不知道问题出在哪里。

你忘记了第二个论点。 例如方法void test()将具有 JNI 签名JNIEXPORT void JNICALL Java..._test(JNIEnv *env, jobject thiz) 在您的情况下,将签名编辑为(JNIEnv *env. jobject thiz, jint a)

编辑

以前的版本显示了静态函数的签名。 我已经更新它以匹配实例函数。

对于静态签名是(JNIEnv *env, jclass clazz)

您已将本机函数声明为private native int test(); 传递一个整数参数给它。 它应该是private native int test(int num);

暂无
暂无

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

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