从Swig C函数向Java返回值

从Swig C函数向Java返回值,java,c,swig,Java,C,Swig,我正在努力理解Swig中.I文件的语法。 即使是像在C中通过地址传递参数这样简单的事情,我也无法在Java中找到正确的调用。 所以我的C函数: void SimpleReturn(int *w) { *w = 3; } 我的Swig文件: %module MYtest %{ #include "MYtest.h" %} %include "arrays_java.i" %apply double[] {double *}; // WTF does

我正在努力理解Swig中.I文件的语法。 即使是像在C中通过地址传递参数这样简单的事情,我也无法在Java中找到正确的调用。 所以我的C函数:

void SimpleReturn(int *w) {
    *w = 3;
}
我的Swig文件:

%module MYtest
%{
#include "MYtest.h"
%}
%include "arrays_java.i"
%apply double[] {double *}; // WTF does this mean ?!?
// Parse the header file to generate wrappers. Why is this here again ?!?
%include "MYtest.h"
还有我的Java:

import net.hep.ami.utility.n2edm.*;
public class main {
    public static void main(String argv[]) {
        System.loadLibrary("MYtest_swig");  // File is libMYtest_swig.so

        int r;
        net.hep.ami.utility.n2edm.MYtest.SimpleReturn(r);
        System.out.println(r);
    }
}
我重读了的第26.3.10节,它看起来很简单,但我无法让它工作

main.java:22: error: incompatible types: int cannot be converted to SWIGTYPE_p_int
                net.hep.ami.utility.n2edm.AMItest.SimpleReturn(r);

是因为它是一个
int
而不是示例中的
Foo
?不是,它需要一个指向int的指针,
SWIGTYPE\u p\u int
,您提供了一个int(按值)。