2011-01-10 44 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" 

而且它的安全聲明,使得使用它的代碼之前的結構。