在导入此dll的类之外调用导入的dll中的方法

时间:2012-12-20 13:08:20

标签: c# dll

我正在尝试从另一个类调用一个方法,该方法位于我导入的dll中。有没有办法做到这一点?先感谢您! 为了澄清自己:有一个名为“TTSManager”的类。在这个类中导入了一个dll。还有一个类“TTSdotNET”,在这个类中我想在一个dll中调用一个方法,但该方法是不可访问的。我希望有人会帮助我。 附:我在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.");
  }
 }
}

1 个答案:

答案 0 :(得分:2)

我倾向于为DLL导入创建一个单独的静态类。除了导入函数之外,我还主要为每个DLL函数调用创建包装器方法。

示例:

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

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

这样,任何类都可以访问DLL,你的问题就解决了。