Теперь я пишу версию старого кода c/C++ для JNI, которую я написал ранее в этом году, чтобы включить в мое приложение для Android. Я написал настольное приложение, эквивалентное тому, что я пишу, как на Java, так и на C++, и разница в производительности заметно, и поэтому я хочу использовать ndk.JNI и старый код на C++
Я чрезвычайно новичок в JNI, и, как я понимаю вещи, кажется, что мне нужно сделать какое-то картографирование типов; jdouble
на замену double
, jint
на замену int
и так далее. Дело в том, что я пробовал использовать один из моих старых кодов без изменений, и это сработало! У меня даже есть некоторые библиотеки STL (list
и vector
), и у меня не было проблем. Я просто включил APP_STL := stlport_static
в файл Android.mk.
Итак, мои вопросы: есть ли штраф за исполнение при этом? Есть ли другой риск, о котором я должен знать? В чем заключается недостаток использования примитивных типов C/C++ в моем jni? Могу ли я сделать код быстрее, или я не буду беспокоиться?
Спасибо,
NAX
Ну, это обнадеживает! Большое спасибо – naxchange
В частности, типы Java имеют четко определенные ширины и подпись - 'jint' - это 32-битное знаковое значение,' jlong' - это подписанное 64-битное значение, 'jchar' - это unsigned 16-bit значение и т. д. Они не зависят от платформы. См. Http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html. – fadden