我有一个简单的函数intErference

我在哪里通过引用传递int Array。
如何设置SWIG的接口文件以使其能够执行此操作?
谢谢,

最佳答案

这是我认为您想要的模式:
干扰

%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[]);

在Reference.c ++中
编译:
int intReference(int intArray[]) {
    intArray[0] = 42;
    return 43;
}

测试代码(java)
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 - SWIG-Java-通过引用传递int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33487089/

10-10 01:27