SWIG C++结构体转java
我试图获得一个简单的 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();
}
如果我的方法返回一个原语,它可以正常工作,但不能与结构一起使用。我在 Windows 上运行 swig.exe -java -c++ MyModule.i
编辑:我想我还需要在 .i 文件中声明一个结构。有人可以证实(或质疑)这一点吗?谢谢。
谢谢, 杰夫
I'm trying to get a simple SWIG example to work that uses a struct as a return type, but my generated file is incorrect. My files look like this.
SwigTest.h
#pragma once
#include "MyHeader.h"
class SwigTest
{
public:
MyHeader testMe();
};
MyHeader.h
struct MyHeader {
int x;
}
and my swig interface file is:
%module MyModule
%{
#include "SwigTest.h"
#include "MyHeader.h"
%}
extern MyHeader testMe();
The resulting JNI file has the following method declaration
public class MyModuleJNI {
public final static native long testMe();
}
If my method returns a primitive, it works fine, but not with the struct. I'm running on windows with swig.exe -java -c++ MyModule.i
EDIT: I think I need to declare a struct in the .i file as well. Could someone confirm (or dispute) that? Thanks.
thanks,
Jeff
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,您还需要在接口文件中声明该结构。
试试这个:
在使用该结构的代码之前声明该结构也更安全。
Yes you need to declare the struct in the interface file as well.
Try this:
Also its safer to declare the struct before the code that makes use of it.