Я пытаюсь обернуть библиотеку C ++ с помощью Swig, и у меня возникают проблемы с перегруженным методом (и не помогает, что я не трогал C ++ в течение 18 лет:)
Вот очень упрощенная структура класса:
class TView : public TObject, public TStreamable {
public:
virtual TPalette& getPalette() const;
}
class TGroup : public TView {
// ...
}
class TWindow: public TGroup {
virtual TPalette& getPalette() const;
}
Файл swig (опять же, упрощенный, выглядит так):
%module(directors="1") tvision
%feature("director") TApplication;
%feature("director") TProgram;
%feature("director") TProgInit;
%feature("director") TWindow;
%feature("director") TWindowInit;
%feature("director") TView;
%feature("director") TGroup;
// Obviously a shotgun approach hoping one of these works :P
%rename ("$ignore") TWindow::getPalette;
%ignore TWindow::getPalette;
%rename ("getPalette2") "TWindow::getPalette";
//...
%include "tv/view.h"
%include "tv/group.h"
%include "tv/window.h"
Когда я генерирую оболочки Java и пытаюсь скомпилировать его,Я получаю эту ошибку:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project tvsample: Compilation failure: Compilation failure:
[ERROR] /home/jdlee/src/turbovision/swig/src/generated/java/com/steeplesoft/turbovision/internal/tvisionJNI.java:[1348,45] incompatible types: short cannot be converted to com.steeplesoft.turbovision.internal.TPalette
[ERROR] /home/jdlee/src/turbovision/swig/src/generated/java/com/steeplesoft/turbovision/internal/TWindow.java:[129,16] getPalette() in com.steeplesoft.turbovision.internal.TWindow cannot override getPalette() in com.steeplesoft.turbovision.internal.TView
[ERROR] return type short is not compatible with com.steeplesoft.turbovision.internal.TPalette
Две вещи.Во-первых, TWindow :: getPalette следует игнорировать, но это не так.Во-вторых, SWIG генерирует этот метод Java:
public short getNumber() {
return tvisionJNI.TWindow_number_get(swigCPtr, this);
}
У кого-нибудь есть ответ на любой вопрос?В идеале должен быть один метод TWindow # getPalette (), который возвращает TPalette.Если бы я мог это исправить, это могло бы решить проблему игнорирования, поскольку я только пытаюсь игнорировать метод, чтобы посмотреть, смогу ли я просто обойти проблему компиляции.
Помогите?Пожалуйста?:)