Swig:从Java调用struct指针

时间:2011-02-14 19:01:40

标签: java swig

我在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的实例供我使用。为了获得有效的实例,我该怎么做?

谢谢!

0 个答案:

没有答案