Android NDK, c ++ векторный тип данных - PullRequest
0 голосов
/ 25 мая 2011
float CalcDistance(vector<SoundInfo> &FeatA, vector<SoundInfo> &FeatB){
     do something here
}

Если у меня есть этот исходный код на C ++, то как мне использовать его с помощью JNI в Android?Я прочитал пару руководств по использованию NDK и получил некоторую базовую идею, но я не уверен, какие типы структуры данных должны быть переданы из Java в JNI для вектора типа в c ++. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 01 июня 2011

Возможно, вы захотите передать объект в (JNI) / из (Java) через массив jobjectArray. Вы можете либо вставить SoundInfo в SoundInfo [] и отправить его непосредственно как jobjectArray, либо передать сам объект, если вы хотите просто использовать методы Get / Set, которые он предоставляет.

См. Документы JNI для Get / SetObjectField (), GetObjectArrayElement () и т. Д.

0 голосов
/ 25 мая 2011

Вы можете начать с написания Java-эквивалента типа SoundInfo, если это структура или класс (если только это не typedef для некоторого целочисленного типа). Он должен нести достаточно данных для построения SoundInfo. Например, объект Java может содержать эквиваленты всех параметров конструктора SoundInfo, и к ним можно обращаться напрямую как к полям, чтобы минимизировать код JNI.

Затем вы можете написать две вспомогательные функции - одну для преобразования Java-объекта в SoundInfo, а другую для преобразования Java List<JSoundInfo> в vector<SoundInfo>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...