У меня есть библиотека C ++, которую я пытаюсь использовать под Java. Чтобы имитировать это хорошо, я пытаюсь использовать typedefs
в интерфейсе .i
файл SWIG. Мне трудно преобразовать универсальные типы в Java. Пока у меня есть такой код в файле интерфейса .i
:
%module api
%{
#include "api.h"
typedef unsigned __int64 Tint64u;
typedef Tint64u TContext_t;
%}
%include "api.h"
%apply unsigned long long { unsigned __int64 };
typedef unsigned __int64 Tint64u;
typedef Tint64u TContext_t;
и под моим классом C ++ у меня есть такой класс, где один из методов принимает TContext_t
в качестве входного аргумента:
class APIClass {
public:
APIClass();
void test(TContext_t context);
};
Я скомпилировал его с SWIG и под Java я пытаюсь использовать этот метод так:
class main {
public static void main(String[] args) {
System.loadLibrary("api");
APIClass api = new APIClass();
api.test((SWIGTYPE_p_unsigned___int64) BigInteger.valueOf(0));
}
}
Но здесь я получаю сообщение об ошибке BigInteger cannot be converted to SWIGTYPE_p_unsigned___int64
. Чего мне не хватает в моем файле интерфейса, чтобы я мог начать передавать числовые значения в мой метод test()
? Я хотел бы инициализировать его с 0 для начала, позже он будет заполнен в программе.