У меня есть следующая строка кода внутри файла c.h:
typedef struct ppr_my_struct* ppr_my_type;
Следует отметить, что ppr_my_type не определен ни в одном из файлов .h
Я создал файл swigTest.i, который ссылается на кучу файлов .h (включая файл, указанный выше). Пример показан ниже:
%module swigTest
%{
#include "C:\blah\a.h"
#include "C:\blah\b.h"
#include "C:\blah\c.h"
%}
#include "C:\blah\a.h"
#include "C:\blah\b.h"
#include "C:\blah\c.h"
Я запустил swig для автоматической генерации java-файлов. Результат "typedef struct ppr_my_struct * ppr_my_type;" показано ниже:
public class SWIGTYPE_p_p_ppr_my_struct {
private long swigCPtr;
protected SWIGTYPE_p_p_ppr_my_struct(long cPtr, boolean futureUse) {
swigCPtr = cPtr;
}
protected SWIGTYPE_p_p_ppr_my_struct() {
swigCPtr = 0;
}
protected static long getCPtr(SWIGTYPE_p_p_ppr_my_struct obj) {
return (obj == null) ? 0 : obj.swigCPtr;
}
}
У меня вопрос: как мне получить действительный экземпляр SWIGTYPE_p_p_ppr_my_struct для использования в моем коде Java? Если я сделаю:
SWIGTYPE_p_p_ppr_my_struct blah = new SWIGTYPE_p_p_ppr_my_struct();
он генерирует фатальное исключение, когда объект используется позже в коде (возможно потому, что я не инициализировал его, вызвав другой конструктор, с которым передается указатель). Никакие другие методы в оставшихся файлах swig java не возвращают мне экземпляр SWIGTYPE_p_p_ppr_my_struct. Что мне нужно сделать, чтобы получить действительный экземпляр?
Спасибо!