【发布时间】:2013-03-22 14:32:22
【问题描述】:
我正在尝试从 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
我使用 java 使用相同的 libMSDKWrapper.so 使用命令
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/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: I/Unity(26176): at (wrapper managed-to-native) SocialAccess:getContextNative ()
03-25 11:40:17.598: I/Unity(26176): 在 SocialAccess.OnClick () [0x00000] in :0
03-25 11:40:17.598: I/Unity(26176):
03-25 11:40:17.598:I/Unity(26176):(文件名:./Runtime/ExportGenerated/AndroidManaged/UnityEngineDebug.cpp 行:43)
【问题讨论】:
-
我们需要查看 .dll 的实现。可能缺少依赖项。
标签: c# unity3d native-code