错误:JNI方法的类型冲突

error: conflicting types for JNI method

本文关键字:类型 冲突 方法 JNI 错误      更新时间:2023-10-16

我在java中有这个代码:

public native String hello(String inputs, String modems, String outputs);

和C中的代码:

JNIEXPORT jstring JNICALL Java_com_marakana_NativeLib_hello(JNIEnv * env, jobject obj, jstring inputs, jstring modems, jstring outputs)

和I有冲突的类型错误:

error: conflicting types for 'Java_com_marakana_NativeLib_hello'
note: previous declaration of 'Java_com_marakana_NativeLib_hello' was here 
make.exe: *** [C:/workspace/marakana//obj/local/armeabi-v7a/objs/ndk_demo/ndk_demo.o] Error 1

我尝试了一个这样的例子,它工作(但与int)。有什么问题吗?

当构建jni代码时,您必须确保使用javah生成的头文件与.class文件中的native声明相匹配。

当您更改本机方法签名时,您必须:

    重新编译.java文件
  1. 从生成的.class文件中重新生成.h文件
  2. 确保.c文件中定义的签名与.h文件中的声明相匹配

如果您错过了任何步骤,您可能最终无法重新编译.c文件,或者最终得到一个无法在VM中加载的非功能本机库。