SWIG C ++结构到java

时间:2011-01-10 21:01:26

标签: java c++ java-native-interface swig

我正在尝试使用一个结构作为返回类型的简单SWIG示例,但我生成的文件不正确。我的文件看起来像这样。

SwigTest.h
#pragma once
#include "MyHeader.h"
class SwigTest
{
public:
    MyHeader testMe();
};

MyHeader.h
struct MyHeader {
    int x;
}

我的swig界面文件是:

%module MyModule
%{
#include "SwigTest.h"
#include "MyHeader.h"
%}
extern MyHeader testMe();

生成的JNI文件具有以下方法声明

public class MyModuleJNI {
  public final static native long testMe();
}

如果我的方法返回一个原语,它可以正常工作,但不能使用结构。我在swig.exe -java -c++ MyModule.i

的窗口上运行

编辑:我想我也需要在.i文件中声明一个结构。有人可以确认(或争议)吗?感谢。

感谢, 杰夫

1 个答案:

答案 0 :(得分:1)

是的,您还需要在接口文件中声明结构。

试试这个:

%module MyModule
%{
#include "MyHeader.h"
#include "SwigTest.h"
%}

%include "MyHeader.h"
%include "SwigTest.h"

在使用它的代码之前声明结构也更安全。