У меня есть собственный код C ++, который я конвертирую в Java с помощью SWIG, чтобы мое приложение Java могло его использовать. В частности, есть некоторые функции, возвращающие std :: vector. Вот фрагмент моего файла интерфейса:
%include "std_vector.i"
namespace std {
%template(Vector) vector<double>;
%template(Matrix) vector<vector<double> >;
}
%include "std_string.i"
std_string.i
и std_vector.i
были включены в мою сборку SWIG, которую я использую. Моим первым сюрпризом было то, что в выходных данных Java была включена «собственная» версия класса Vector от SWIG (в отличие от использования java.util.Vector
). Моя настоящая проблема в том, что векторы, возвращаемые этими функциями, похоже, не работают.Например, я не могу получить их содержимое с помощью get ()
(иногда сбой программы) или функции size ()
, возвращающей отрицательные значения. Я знаю, что векторные Vector
содержат данные, потому что я закодировал 'String' версии тех же функций, которые просто перебирают Vector
(обратно в собственный код C ++) и возвращают содержимое в Строковое
значение, разделенное запятыми. Хотя это допустимый обходной путь, в конечном итоге я хотел бы, чтобы он работал должным образом, чтобы я мог получать и управлять векторами
. Любая помощь / советы будут очень благодарны.