Я использую SWIG, чтобы обернуть большую и сложную библиотеку. Некоторые типы переводятся как SWIGTYPE_p_myType
, и это потому, что SWIG не знает, как их переводить в Java.
Например, это может произойти со следующим кодом
enum Eenum {zero, one};
class Foo {
public:
void _enums(Eenum& outEnum);
void _doubles(double& outDouble);
};
Использование простого .i
файла, подобного этому
%module customtypemaps
%{
#include "customtypemaps.h"
%}
%include "customtypemaps.h"
приведет к созданию следующих файлов:
Eenum.java
Foo.java
SWIGTYPE_p_Eenum.java
SWIGTYPE_p_double.java
customtypemaps.java
customtypemapsJNI.java
В то время как SWIGTYPE_p_double
просто удалить, просто используя таблицы типов в typemaps.i
вот так:
%module customtypemaps
%{
#include "customtypemaps.h"
%}
%include <typemaps.i>
%apply double & OUTPUT { double & outDouble }
%include "customtypemaps.h"
Я не понимаю, как справиться с перечислением (или другим подобным использованием), которое у меня есть в проекте.
Я понимаю, что у меня есть определить свою пользовательскую карту типов, но не понимаю, что именно мне нужно делать.
Спасибо за вашу помощь.
AL