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个论点,但是我希望这可以说明。
注意:即使此代码对我不起作用。
我的应用程序在呼叫过程后立即崩溃()。你能建议我,我做错了什么?编译器什么也没告诉我,我不知道问题在哪里。
您忘记了第二个参数。例如,方法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);
相关文章:
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 如何找出应用程序崩溃的原因 - Win 10 LTSB
- 操纵安卓相机的深度图导致应用程序崩溃
- 调用 java 的回调() 时应用程序崩溃.由于 detatchThread 而获得运行时错误
- QCompleter set模型使应用程序崩溃
- Qt 5 应用程序崩溃并出现"qLineEdit::setText"
- 切换NvAPI_Stereo_Deactivate/NvAPI_Stereo_activate会使unity应用程序崩溃
- eglSwapBuffers上的应用程序崩溃
- VLD 使应用程序崩溃
- 由于调用 std::condition_variable 后参数无效而导致应用程序崩溃
- 执行递归函数时 C++ 应用程序崩溃
- 在 C++/CLI/C# 项目中启用"Native Code Debugging"导致应用程序崩溃
- LOCAL_SHARED_LIBRARIES使我的应用程序崩溃
- 为什么使用 nullPtr 调用函数不会使我的应用程序崩溃
- 当删除上下文属性中的QLIST对象时,QT QML应用程序崩溃
- React 本机 0.59 应用程序崩溃并出现 libc 错误
- 当使用“制造”编译的程序中使用库时,应用程序崩溃
- 如何在导致应用程序崩溃的代码中修复指令
- C++多线程应用程序崩溃
- 当使用 /ENTRY:main 和 /MT 运行时库编译为 /SUBSYSTEM:WINDOWS 时,应用程序崩溃