SWIG C ++ структура для Java - PullRequest
0 голосов
/ 11 января 2011

Я пытаюсь заставить работать простой пример 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. Может ли кто-то это подтвердить (или оспорить)? Спасибо.

спасибо, Джефф

1 Ответ

1 голос
/ 28 января 2011

Да, вам также нужно объявить структуру в файле интерфейса.

Попробуйте:

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

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

Также безопаснее объявить структуру перед кодом, который ее использует.

...