0

我正在尝试从另一个类调用一个方法,该方法位于我导入的 dll 中。有没有办法做到这一点?先感谢您!澄清一下:有一个名为“TTSManager”的类。在这个类中导入了一个 dll。还有一个类“TTSdotNET”,在这个类中,我想在 dll 中调用一个方法,但该方法不可访问。我希望有人能帮助我。PS我在C#“TTSManager”中编码:使用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 回答