如何解决从 Swig C 函数向 Java 返回值
我正在努力理解 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);
}
}
我重读了 http://www.swig.org/Doc4.0/Java.html#Java_pointers_refs_arrays 的第 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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。