std :: vector <int64_t>, переданный из c ++ в java, возвращает SWIGTYPE_p_in64_t, который нельзя использовать - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь использовать swig (v3) для преобразования функции, имеющей std :: vector в качестве входа в код Java. но при компиляции с помощью swig я получил файл с классом StdVector_int64 с методом get (int i), который возвращает SWIGTYPE_p_in64_t ...., который неприменим. так что мой вопрос, как преобразовать SWIGTYPE_p_in64_t.java в примитивный тип Java?

Я создал файл tools.swig с директивой шаблона, но он не работает должным образом.

заголовочный файл c ++:

#pragma once

#include <vector>
#include "stdint.h"

extern void computeVector(std::vector<int64_t> _return);

файл swig:

%module(directors="1") LocalServices 
%include "std_vector.i"
%include "stdint.i"

%{
#include "tools.h"
using namespace cov::core;
%}

%template(StdVector_int64) std::vector< in64_t >;

%javaconst(1);

%include "tools.h"

команда запущена:

swig -c++ -DSWIGWORDSIZE64 -java tools.swig

Я хочу, чтобы метод get (...) из StdVector_int64 возвращал длинный примитивный тип.

...