2017-03-24 14 views
0

私のC#コードでJSライブラリを実装しようとしています。 は非常に簡単ですが、私はこのエラーを取得しています:EntryPointNotFoundException外部JS Libエラー

EntryPointNotFoundException: Test TalkDB.Start() (at Assets/Scripts/TalkDB.cs:30)

C#のコードは.jslib拡張子を持つプラグイン/ WebGLのでscriptsフォルダとJSライブラリです。 また、この記事を読んでいないが、私は行方不明です何全くわから: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ライブラリ:

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

mergeInto(LibraryManager.library, HighscorePlugin); 

答えて

0

EntryPointNotFoundExceptionmeansが機能する「テストを意味し、 "は(A)エクスポート可能(マークされていない)とマークされていないか、または(B)シグネチャがC#定義と一致していません。

あなたの問題はおそらく前者(A)です。

ライブラリに対してDUMPBIN.EXEを実行して、「テスト」機能がエクスポートされ、それぞれのシグネチャがC#定義と一致することを確認することをお勧めします。 JS側でコードを注入することができます。

+0

こんにちは、お返事ありがとうございます。私はwrittingしているときライブラリ関数を取得することができますので、私はその部分は大丈夫だと仮定します。 Dumpbin.exeは.jslibで動作しますか? – Gonkas

+0

jslibをInterOp経由で.NETにインポートすることはできません。私は、あなたのJavaLibにはWindows DLLの拡張を容易にするものがあると仮定していましたが、そのようには見えません。例えば。 DumpBinがライブラリを認識しない場合、Windows DLLをサポートするものでライブラリをラップする必要があります – SensorVista

1

答えが見つかりましたが、実際は非常に簡単です。 サーバーから実行しているときだけ、ローカルで実行しても機能しません。これが行われる必要があり、このエラーを防止するために :!

UNITY_WEBGL & &の#if UNITY_EDITOR

[DLLIMPORT( "__内部")] プライベート静的にextern無効テスト();

//何か他のものあなたは

#endifの

を行うと、関数を呼び出すときにもこれをやりたいエミュレートするための#else 。 ハッピープログラミング:)