我在c.h文件中有以下代码行:
typedef struct ppr_my_struct* ppr_my_type;
我应该提到ppr_my_type没有在任何.h文件中定义
我创建了一个引用一堆.h文件的swigTest.i文件(包括上面提到的文件)。示例如下所示:
%module swigTest
%{
#include "C:\blah\a.h"
#include "C:\blah\b.h"
#include "C:\blah\c.h"
%}
#include "C:\blah\a.h"
#include "C:\blah\b.h"
#include "C:\blah\c.h"
我运行了swig来自动生成java文件。 “typedef struct ppr_my_struct * ppr_my_type;”的结果如下所示:
public class SWIGTYPE_p_p_ppr_my_struct {
private long swigCPtr;
protected SWIGTYPE_p_p_ppr_my_struct(long cPtr, boolean futureUse) {
swigCPtr = cPtr;
}
protected SWIGTYPE_p_p_ppr_my_struct() {
swigCPtr = 0;
}
protected static long getCPtr(SWIGTYPE_p_p_ppr_my_struct obj) {
return (obj == null) ? 0 : obj.swigCPtr;
}
}
我的问题是,如何在我的java代码中获得SWIGTYPE_p_p_ppr_my_struct的有效实例?如果我这样做:
SWIGTYPE_p_p_ppr_my_struct blah = new SWIGTYPE_p_p_ppr_my_struct();
当稍后在代码中使用该对象时,它会引发一个致命的异常(可能是因为我没有通过调用指针传递的其他构造函数来初始化它)。其余的swig java文件中没有其他方法返回SWIGTYPE_p_p_ppr_my_struct的实例供我使用。为了获得有效的实例,我该怎么做?
谢谢!