2012-12-20 31 views
0

我想從另一個類調用一個方法,這是在我導入的dll中。有沒有辦法做到這一點?先謝謝你! 澄清自己:有一個名爲「TTSManager」的類。在這個類中,一個dll被導入。還有一個類「TTSdotNET」,在這個類中,我想調用一個DLL中的方法,但該方法不可訪問。我希望有人能幫助我。 P.S.我用C#編寫代碼 「TTSManager」: 使用UnityEngine;使用System.Collections的 ;使用系統的 ; using System.Runtime.InteropServices;調用一個導入的dll內的一個方法,這個dll導入的類之外

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

希望你已經在你想要調用類方法的頁面上引用dll嗎?發佈一些代碼以獲得更多的清晰度 – iJade

+1

爲了說明一下你自己,你可能想要展示一些你編寫的代碼來演示你的問題。 – PhoenixReborn

+0

你必須看看在第一個類中創建一個方法,該方法將調用包裝爲導入的dll,並從第二個類中調用該方法 –

回答

1

我傾向於創建一個單獨的靜態類的DLL進口。除了導入函數之外,我還主要爲每個DLL函數調用創建包裝器方法。

例子:

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

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

這樣一來,任何類都可以訪問的DLL和你的問題就解決了。