使用 C 在 JNI 中获取"conflicting types error"
get "conflicting types error" in JNI with C
我试图编译这个:
#include <stdio.h>
#include <jni.h>
#include "callJNITest.h"
JNIEXPORT jint JNICALL Java_callJNITest_displayHelloWorld
(JNIEnv env, jclass jcls) {
printf("Hello World!");
return 1;
}
但我总是会犯以下错误:../HelloWorldJNI.c:5:24:错误:"Java_callJNITest_displayHelloWorld"的类型冲突../callJNITest.h:15:24:注意:"Java_callJNITest_displayHelloWorld"的先前声明在此处make:*[HelloWorldJNI.o]错误1
错误也发生在这种情况下:
JNIEXPORT void JNICALL Java_callJNITest_displayHelloWorld
(JNIEnv env, jclass jcls) {
printf("Hello World!");
return;
}
但是
JNIEXPORT JNICALL Java_callJNITest_displayHelloWorld
(JNIEnv env, jclass jcls) {
printf("Hello World!");
return;
}
工作良好。我的问题是返回类型应该如何在JNI中声明?谢谢
从我的评论中创建一个答案,因为它解决了OP的问题。
头文件包含一个声明,其中Java_callJNITest_displayHelloWorld
的第一个参数的类型是JNIEnv*
,而在cpp文件中,它的类型为JNIEnv
。修复方法是将cpp文件中env
的类型更改为JNIEnv*
,使其与头文件中的声明相匹配。
相关文章:
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- 构建 TensorFlow r1.14 C++文件时缺少文件"tensorflow/core/framework/types.pb.h"
- DRD 报告"conflicting load" std::mutex::lock 上的错误
- 为什么"types may not be defined in parameter types"
- 如何在Arduino程序中解决"invalid operands of types"?
- 错误"invalid types ... for array subscript"是什么意思?
- 无法打开源文件"sys/types.h"、"sys/stat.h"
- 传递自定义函数类型时的'incompatible types in assignment'
- SWIG INOUT types (C++ to Python)
- 尝试实施 PIMPL idom 时如何避免"redefinition; different basic types"
- MinGW64和"conflicting declaration of C function int select(...)"
- 有人能解释一下特殊的std::函数模板参数列表语法(这个奇怪的类型(Types..))吗
- 当foo是接受单个模板参数的结构时,'foo<Type1, Types...>'是否合法?
- 为什么编译器显示错误"no match for 'operator[]' (operand types are 'carti' and 'int')"
- " invalid operands of types 'int' and 'int* const'" 来自功能的错误,来自书
- 错误消息"deduced conflicting types for parameter 'const T'"
- 获取错误:"error: conflicting types for ‘call_celsius’ "和"note: previous implicit declaration of ‘call_ce
- 如何使用"python setup.py build"解决C++/C编译过程中的"conflicting types"错误?
- 使用 C 在 JNI 中获取"conflicting types error"
- 对于相互转换的类型,有没有办法绕过"deduced conflicting types for parameter in template instantiation"?