gpt4 book ai didi

java - SWIG - Java - 通过引用传递 int

转载 作者:行者123 更新时间:2023-12-01 10:58:18 25 4
gpt4 key购买 nike

我有一个简单的函数 intReference

int intReference(int *intArray)

我通过引用传递 intArray 的位置。

如何设置 SWIG 的接口(interface)文件才能做到这一点?

谢谢

最佳答案

这是我认为你想要的模式:

intReference.i

%module intReference
%{
extern int intReference(int intArray[]);
%}

%typemap(jtype) int intArray[] "int[]"
%typemap(jstype) int intArray[] "int[]"
%typemap(javain) int intArray[] "$javainput"
%typemap(jni) int intArray[] "jintArray"
%typemap(in) int intArray[] {
jboolean isCopy;
$1 = JCALL2(GetIntArrayElements, jenv, $input, &isCopy);
}
%typemap(freearg) int intArray[] {
JCALL3(ReleaseIntArrayElements, jenv, $input, $1, 0);
}


extern int intReference(int intArray[]);

intReference.c

int intReference(int intArray[]) {
intArray[0] = 42;
return 43;
}

编译:

swig -java *.i
javac *.java

export JAVA_HOME=/usr/local/jdk1.8.0_60/
gcc -shared *.c -I "${JAVA_HOME}/include" -I "${JAVA_HOME}/include/linux" -o libintReference.so

测试代码(java)

System.loadLibrary("intReference");
int intArray[] = new int[1];
intReference.intReference(intArray);
System.out.println("intArray[0] = " + intArray[0]);

关于java - SWIG - Java - 通过引用传递 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33487089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com