SWIG C++;结构转换为java

SWIG C++;结构转换为java,java,c++,java-native-interface,swig,Java,C++,Java Native Interface,Swig,我试图让一个简单的SWIG示例使用struct作为返回类型,但我生成的文件不正确。我的文件看起来像这样 SwigTest.h #pragma once #include "MyHeader.h" class SwigTest { public: MyHeader testMe(); }; MyHeader.h struct MyHeader { int x; } 我的swig接口文件是: %module MyModule %{ #include "SwigTest.h" #i

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

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();
}
如果我的方法返回一个原语,它可以正常工作,但不能用于结构。我在windows上运行的是
swig.exe-java-c++MyModule.I

编辑:我想我还需要在.I文件中声明一个结构。有人能证实(或反驳)这一点吗?谢谢

谢谢,
Jeff

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

试试这个:

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

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

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

Hey@Jeff!你有什么解决办法吗?如果您已经解决了问题,请提供帮助