我正在尝试使用将结构作为返回类型的简单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();
}
如果我的方法返回一个原语,则可以正常工作,但不能与struct一起工作。我在Windows上使用
swig.exe -java -c++ MyModule.i
运行编辑:我想我也需要在.i文件中声明一个结构。有人可以确认(或提出异议)吗?谢谢。
谢谢,
杰夫
最佳答案
是的,您还需要在接口文件中声明该结构。
尝试这个:
%module MyModule
%{
#include "MyHeader.h"
#include "SwigTest.h"
%}
%include "MyHeader.h"
%include "SwigTest.h"
在使用该结构的代码之前声明该结构也更安全。