错误:JNI方法的类型冲突
error: conflicting types for JNI method
我在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
声明相匹配。
当您更改本机方法签名时,您必须:
- 重新编译
- 从生成的
.class
文件中重新生成.h
文件 - 确保
.c
文件中定义的签名与.h
文件中的声明相匹配
.java
文件如果您错过了任何步骤,您可能最终无法重新编译.c
文件,或者最终得到一个无法在VM中加载的非功能本机库。
相关文章:
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- C++哈希表 - 如何解决自定义数据类型作为键的unordered_map冲突?
- 模板冲突的类型-但类型应该是相同的cfr类层次结构
- 冲突声明/重新定义:不同的基本类型
- 可变参数的冲突类型
- 致命错误LNK1112:在 npm 安装期间,模块计算机类型'X86'与目标计算机类型'x64'冲突
- GCC 6.3.0 中的 ODR 冲突,类型在两个单独的翻译单元中定义
- 通过参考推断模板包中的冲突类型
- 错误:在 mingw64 上构建 cmake+boost 项目时'GetSystemTimeAsFileTime'的类型冲突
- 致命错误LNK1112:通过 vcvarsall .bat x86 运行构建'X86'模块计算机类型'x64'与目标计算机类型冲突
- 模板运算符重载中的类型冲突
- 相同定义变量的部分类型冲突
- g++4.7.1编译错误:“strsignal”的类型冲突
- 一元*的类型冲突error和无效类型参数具有int
- C++子类上的Bison类型冲突
- 数据类型冲突
- 防范非类型模板参数中的类型冲突
- 错误:指定的返回类型冲突,与通常不同
- 编译器报错类型冲突
- 错误:JNI方法的类型冲突