Я делаю собственный плагин для 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?и где я иду не так в моем процессе?Спасибо.