我正在尝试从C ++程序调用Java静态方法,我已经获得了以下Java代码:
Undefined name 'auth'.
然后在cpp代码中我有:
var oneDrivePath = Environment.GetEnvironmentVariable("OneDriveConsumer");
在main.cpp中,我已经:
// 123.11.1.1, 123.1.1.12, 123.322.12.1
String list = merchant.getAllowed_ip_address();
String ip = request.getRemoteAddr().trim();
boolean inthelist = false;
for (String aip : list.split(",")) {
if (aip.trim().equals(ip)) {
inthelist=true;
break;
}
}
输出为:
public static int[] arrayFunc(int [] array) {
int [] newArray = copyOf(array, array.length);
for(int i = 0; i < newArray.length; ++i) {
newArray[i] += 1;
}
return newArray;
}
我希望最后3行应为“ 1 2 3”。但实际上不是。那么我的程序在哪里出错了,以及如何解决?
非常感谢。
答案 0 :(得分:3)
您不能将jintArray
作为常规C数组进行访问。您需要使用适当的JNI函数来访问数据:
jintArray ret = CallStaticFunction("arrayFunc", buf, 3);
int *p = env->GetIntArrayElements(ret, NULL);
for(int i=0;i<3;++i){
printf("%d\n", p[i]);
}
env->ReleaseIntArrayElements(ret, p, JNI_ABORT);
有关这些功能如何工作的更多信息,请参见the documentation。