2011-01-10 43 views
0

我想要得到一个简单的SWIG示例来使用结构作为返回类型,但我生成的文件不正确。我的文件看起来像这样。SWIG C++结构到java

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

MyHeader.h 
struct MyHeader { 
    int x; 
} 

和我痛饮接口文件是:

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

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

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

如果我的方法返回一个原始的,它工作正常,但不与结构。我在Windows上运行带有swig.exe -java -c++ MyModule.i

编辑:我想我需要声明的.i文件的结构体为好。有人可以证实(或争议)吗?谢谢。

感谢, 杰夫

回答

1

是的,你需要声明的接口文件的结构为好。

试试这个:

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

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

而且它的安全声明,使得使用它的代码之前的结构。