Как использовать код С++ на Android с помощью единства?

Я пытаюсь создать приложение Android AR. Я использую единство ide.

Я создаю файл .so из файла cpp, используя ndk-build на Ubuntu. Содержимое файла:

#include ...

extern "C" {    
    int returnInt()
    {    
        int returnVal = 4;
        return returnVal;
    }    
}

Мой файл .so создан для многих типов процессоров. Я копирую его и вставляю в папку assets/plugin/android/armeabi-v7a. В единстве я загружаю этот файл .so в функцию Start с помощью [DllImport ("aruco-build")] public static extern int returnInt();.

Я вызываю эту функцию на единстве:

guiText.text = returnInt.toString()

Я создаю apk из единства и запускаю этот apk на телефоне Android. Я не вижу значение returnInt на экране. Я не понимаю причины этого.


person zakjma    schedule 02.09.2015    source источник
comment
Мой опыт заключался в том, что вам нужно обернуть вызов C с помощью Java и вызвать Java из Unity.   -  person Almo    schedule 02.09.2015
comment
Нет, я создал и использовал аналогичный код C++ на Android с помощью Unity. Оно работает.   -  person zakjma    schedule 02.09.2015
comment
IIRC, файлы .so обычно находятся в папке /libs? то есть активы/плагин/android/libs/armeabi-v7a/your_so_file? Никогда не работал с плагинами Android NDK, так что это своего рода выстрел в темноту.   -  person Venkat at Axiom Studios    schedule 02.09.2015
comment
Я поместил файл .so в папку assets/plugin/Android/libs/armeabi-v7a. Но это не работает.   -  person zakjma    schedule 02.09.2015
comment
1) Проверяйте журналы ADB при запуске APK. (2) Кроме того, вы правильно написали название проекта? (3) Виден ли ваш текст на экране? (попробуйте указать фиктивное значение и посмотрите, действительно ли оно видно.) Ваш код выглядит нормально.   -  person Puneet    schedule 02.09.2015


Ответы (1)


returnInt - это функция, и вы должны относиться к ней как к функции returnInt().toString();, и вы должны поместить свой файл .so в плагины/Android, я надеюсь, что это сработает

person Rostami    schedule 31.12.2019