Плагин Unity Native C ++ для Android - PullRequest
       0

Плагин Unity Native C ++ для Android

0 голосов
/ 14 декабря 2018

Я делаю собственный плагин для Android, написанный на C ++ и упакованный в общую библиотеку для Unity Game Engine.Тем не менее, я получаю EntryPointNotFoundException даже с исходным native-lib.cpp, сгенерированным Android Studio.

#include <jni.h>
#include <string>

extern "C" JNIEXPORT jstring JNICALL Java_com_example_willgauthier_stublibrary_MainActivity_stringFromJNI(
    JNIEnv *env,
    jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}

В Android Studio я создал проект.Затем в Unity я создал структуру папок Assets / Plugins / Android / libs и скопировал в общие libnative-lib.so библиотеки armeabi-v7a и x86 .

Я прикрепил этот сценарий к пустому игровому объекту:

using System;
using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.UI;

public class LibLoadTest : MonoBehaviour
{
    public Text debugText;

    [DllImport("native-lib")]
    private static extern string stringFromJNI();

    private void Start()
    {
        try
        {
             debugText.text = stringFromJNI();
        }
        catch(Exception exception)
        {
            debugText.text = exception.ToString();
        }
    }
}

Мой текст debugText показывает «System.EntryPointNotFoundException: stringFromJNI в (управляемой оболочке-управляемой-родной) LibLoadTest:: stringFromJNI () в LibLoadTest.Start () [0x00000] in: 0 "вместо" Hello from C ++ ".

Кто-нибудь знает, как успешно использовать собственную подключаемую библиотеку для Android в Unity?и где я иду не так в моем процессе?Спасибо.

1 Ответ

0 голосов
/ 15 декабря 2018

Я выяснил проблему благодаря Bonfire-Boy на форумах Unity ответы: имя функции, которую я должен был попытаться импортировать, было Java_com_example_willgauthier_stublibrary_MainActivity_stringFromJNI , а не просто stringFromJNI .Я неправильно предположил, что, поскольку длинное имя было сгенерировано автоматически и включало структуру пакета (не уверен, что это правильный термин), его можно было игнорировать.Удаление всего до stringFromJNI в определении функции библиотеки работало, хотя.

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