我通过将许多变量从Java传递到C
来使用JNIpublic native int[] intArrayMethod(int[] t,int nbr,int tag);
如何在C中使用这些变量? 我已生成头文件,我获得了:
#ifndef _Included_MainClass
#define _Included_MainClass
#ifdef __cplusplus
extern "C"
{
#endif
/*
Class: MainClass
Method: intArrayMethod
Signature: ([FII)[I
*/
JNIEXPORT jintArray JNICALL Java_MainClass_intArrayMethod
(JNIEnv *, jobject, jfloatArray, jint, jint);
#ifdef __cplusplus
}
#endif
#endif
如何使用我的C代码中传递的变量?
答案 0 :(得分:0)
代码:
#include "foo.h"
JNIEXPORT jintArray JNICALL Java_MainClass_intArrayMethod
(JNIEnv * env, jobject obj, jfloatArray arr, jint a, jint b) {
jintArray ret[2];
ret[0] = a + b;
ret[1] = arr[0] + arr[1];
return ret;
}
用这样的东西编译:
gcc -shared foo.c -I/path/to/java/include -o libfoo.so
不要忘记在Java代码中包含一个加载行:
static {
System.loadLibrary("foo"); // does not include lib prefix, or .dll/.so suffix!
}
运行此命令,(假设当前目录中有libfoo.so)。
java -Djava.library.path=. Foo