0

インポートした dll にあるメソッドを別のクラスから呼び出そうとしています。それを行う方法はありますか?前もって感謝します!自分自身を明確にするために:「TTSManager」と呼ばれるクラスがあります。このクラスでは、dll がインポートされました。クラス「TTSdotNET」もあり、このクラスではdll内でメソッドを呼び出したいのですが、メソッドにアクセスできません。誰かが私を助けてくれることを願っています。C#「TTSManager」での PS I コード: UnityEngine を使用。System.Collections を使用します。システムを使用する; System.Runtime.InteropServices を使用します。

public class TTSManager : MonoBehaviour 
{
[DllImport ("SpeakerLib")]
private static extern void SpeakToSpeaker(string tts);  
[DllImport ("SpeakerLib")]
private static extern void SpeakToFile(string tts, string fileName, string fileFormat);                                     [DllImport ("SpeakerLib")]
private static extern void ReleaseSpeaker();

private static TTSManager instance = null;

private TTSManager(){}

public static TTSManager getInstance
{
    get
    {
        if(instance == null)
        {
            instance = new TTSManager();
        }
        return instance;
    }
}

// Use this for initialization
void Start () 
{

}

// Update is called once per frame
void Update () 
{

}
}

"TTSdotNET":

public class TTSdotNet : MonoBehaviour 
{
 void Update () 
 {
  if (Input.GetKey(KeyCode.F10))
  {
   SpeakToSpeaker("hello world i feel uncomfortable.");
  }
 }
}
4

1 に答える 1

2

私は、DLL インポート用に別の静的クラスを作成する傾向があります。関数をインポートするだけでなく、ほとんどの場合、DLL 関数呼び出しごとにラッパー メソッドも作成します。

例:

internal static class NativeCalls
{
    [DllImport ...]
    private static extern int SomeFunctionCall(...);

    public static int SomeFunction(...)
    {
        return SomeFunctionCall(...);
    }
}

そうすれば、どのクラスでも DLL にアクセスでき、問題は解決します。

于 2012-12-20T13:22:10.107 に答える