Я использую LibGDX для написания приложений как для Android, так и для iOS, и я хочу иметь возможность добавлять код C ++ в мои приложения для оптимизации определенных частей, а также для переноса некоторых функций и т. Д.
Я искал в Интернете и пытался следовать некоторым учебникам, но не нашел то, что мне нужно.
Как я могу написать очень простую библиотеку C ++, которую я могу загрузить в LibGDX? Какие инструменты мне нужно использовать? Visual Studio? Я занимаюсь разработкой в Android Studio.
Я думаю, что мне нужен .so файл для Android и .a файл для iOS, это правильно?
На обеих платформах можно напрямую включить предварительно скомпилированную библиотеку, а также исходный код C ++.
На Android вы захотите изучить использование Android NDK
, Это позволяет вам включать собственный код C / C ++, который может соединяться с Java. Соединение между Java и C / C ++ управляется с помощью JNI
, Это довольно нудная, неуклюжая система для общения между C ++ и Java. Вы хотите посмотреть на создание Android.mk
make-файл, который определяет, как включить вашу библиотеку (или исходный код) в вашу сборку.
На iOS это немного более тесно связано. У вас могут быть файлы Objective-C ++, которые могут выполнять как код C ++, так и код Objective-C. Если вы используете Swift, он немного другой (мост между Objective-C ++ и Swift).
В некоторых случаях, когда платформа (Android / iOS) предоставляет функциональные возможности, которые превосходят возможности, которые возможны или реалистичны в C ++, вы можете столкнуться с тем, что разрабатываете код, чтобы ваш C ++ мог обращаться к платформе по мере необходимости. Это означает, что у вас могут быть заголовки с отдельными файлами реализации для каждой платформы.
thing.h
thing_android.cpp
thing_ios.mm
Приложения для Android Android.mk
файл будет включать thing_android.cpp
(но нет thing_ios.mm
). Этот файл может пересекать мост JNI для взаимодействия с Java по мере необходимости, когда вам что-то понадобится из Android SDK.
Приложение для iOS будет включать thing_ios.mm
(но нет thing_android.cpp
). .mm
расширение означает Objective-C ++, так что файл может напрямую вызывать мощные библиотеки Какао по мере необходимости.
Наконец, на всех платформах вы должны быть уверены, что либо сократите использование C ++ до платформы с наименьшим общим знаменателем. Другими словами, если iOS поддерживает определенную функцию C ++, а Android нет, то вы не можете использовать эту функцию.
Других решений пока нет …