SWIG (v1.3.29) сгенерировал из C ++ в класс Java Vector некорректно

У меня есть собственный код 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 ++) и возвращают содержимое в Строковое значение, разделенное запятыми. Хотя это допустимый обходной путь, в конечном итоге я хотел бы, чтобы он работал должным образом, чтобы я мог получать и управлять векторами . Любая помощь / советы будут очень благодарны.

11
задан ObscureRobot 18 November 2011 в 23:00
поделиться