【发布时间】:2012-07-26 02:54:43
【问题描述】:
我尝试编译这个:
#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 中声明返回类型?谢谢!
【问题讨论】:
-
callJNITest.h 中有什么内容?
-
/* 不要编辑这个文件 - 它是机器生成的 */ #include
#ifndef _Included_callJNITest #define _Included_callJNITest #ifdef __cplusplus extern "C" { #endif JNIEXPORT jint JNICALL Java_callJNITest_displayHelloWorld ( JNIEnv *, jclass); #ifdef __cplusplus } #endif #endif -
看起来你在 cpp 文件中使用 JNIEnv 作为 env,而它应该是 JNIEnv*
标签: c++ c types java-native-interface