我正在尝试从另一个类调用一个方法,该方法位于我导入的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.");
}
}
}
答案 0 :(得分:2)
我倾向于为DLL导入创建一个单独的静态类。除了导入函数之外,我还主要为每个DLL函数调用创建包装器方法。
示例:
internal static class NativeCalls
{
[DllImport ...]
private static extern int SomeFunctionCall(...);
public static int SomeFunction(...)
{
return SomeFunctionCall(...);
}
}
这样,任何类都可以访问DLL,你的问题就解决了。