我正在尝试从 Unity3D 调用一个简单的本机函数 (C++)。我做了以下事情:
放置
libMSDKWrapper.so
在 Assets->Plugins->Android这是我的 C# 代码
using UnityEngine; using System.Collections; using System.Runtime.InteropServices; public class facebooktest : MonoBehaviour { [DllImport ("MSDKWrapper")] private static extern long getContextNative(); void Start () { Debug.Log("Hello, World!"); long context = getContextNative(); // <-- Exception thrown here Debug.Log(context); } }
我收到以下异常:
system.entrypointnotfoundexception at [0x00000] in Filename unknown:0
我使用相同的 libMSDKWrapper.so 使用 java 使用命令
System.loadLibrary("MSDKWrapper");
我能够访问和使用 getContextNative() 方法。
编辑 1:我解压了 apk 的内容,发现 libMSDKWrapper.so 文件存在于 test.apk/lib/armeabi-v7a 中
编辑 2:这里是 logcat 日志。03-25 11:40:17.543: D/dalvikvm(26176): 试图加载 lib /data/data/com.disney.citygirl.goo/lib/libMSDKWrapper.so 0x41566348 03-25 11:40:17.568: D/ MSDK(26176):注册提供者:SN_COMMUNITY 03-25 11:40:17.568:D/MSDK(26176):注册提供者:SN_FACEBOOK 03-25 11:40:17.568:D/dalvikvm(26176):添加共享库/数据/data/com.disney.citygirl.goo/lib/libMSDKWrapper.so 0x41566348 03-25 11:40:17.568: I/MSDK(26176): JNI_OnLoad 调用 03-25 11:40:17.573: D/dalvikvm(26176) : 试图加载 lib /data/data/com.disney.citygirl.goo/lib/libMSDKWrapper.so 0x41566348 03-25 11:40:17.573: D/dalvikvm(26176): Shared lib '/data/data/com. disney.citygirl.goo/lib/libMSDKWrapper.so' 已经加载到同一个 CL 0x41566348 03-25 11:40:17.598: I/Unity(26176): System.EntryPointNotFoundException: getContextNative 03-25 11:40:17.598:
03-25 11:40:17.598:I/Unity(26176):(文件名:./Runtime/ExportGenerated/AndroidManaged/UnityEngineDebug.cpp 行:43)