EntryPointNotFoundException外部JS Lib错误

时间:2017-03-24 16:06:01

标签: javascript c# unity3d

尝试用我的C#代码实现JS库。 很简单,但我收到了这个错误:

  

EntryPointNotFoundException:测试   TalkDB.Start()(在Assets / Scripts / TalkDB.cs:30)

C#代码位于scripts文件夹中,JS库位于插件/ webgl,扩展名为.jslib。 另请阅读本文,但不知道我遗漏了什么:https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html?_ga=1.27144893.1658401563.1487328483

C#代码:

public class TalkDB : MonoBehaviour
{
    [DllImport("__Internal")]
    private static extern void Test();

    void Start()
    {

        Test();

    }
}

JS Library:

var HighscorePlugin = {
    Test: function()
    {
        window.alert("Testing 1, 2, 3,...");
    }
};

mergeInto(LibraryManager.library, HighscorePlugin);

2 个答案:

答案 0 :(得分:1)

找到答案,其实很简单。 只在从服务器运行时,我在本地运行时不起作用。 为了防止出现这种错误,应该这样做:

#if UNITY_WEBGL&& !UNITY_EDITOR

[的DllImport(" __内部&#34)] private static extern void Test(); 的#else

//其他一些模仿你想做的事情

#ENDIF

在调用函数时也这样做。 快乐编程:)

答案 1 :(得分:0)

EntryPointNotFoundExceptionmeans意味着函数“Test”要么(A)未标记为可导出(不可见),要么(B)签名与C#定义不匹配。

很可能你的问题是前者(A)。

我建议对您的库运行DUMPBIN.EXE,以验证您的“test”函数是否已导出,并且其各自的签名与您的C#定义相匹配。可能是JS端的代码注入。