2009-08-19 71 views
1

我是C#程序員,並且不與本地介紹。 我有一個本地DLL,&心中已經用在我的項目,但會導致一些類型的託管代碼行不通的。 我會準備在本地(C++)一個DLL,我要在事件occure,然後知道我的託管代碼;我怎樣才能做到這一點?創建本地DLL

回答

1

如果您的本機DLL的API允許您將函數指針註冊爲要在引發事件時調用的回調函數,則可以將常規C#委託函數作爲函數指針(Marshal.GetFunctionPointerForDelegate)進行編組,然後僅通過通過註冊託管代理的P/Invoke。

1

如果你想處理您的C#代碼本土賽事,那麼我認爲最好的辦法是寫一個C++/CLI DLL這將作爲工作的C++本地DLL和C#DLL之間的中間層。你可以處理事件在中間庫,並通過他們對這種方式要由託管DLL再次抓獲。

另一種選擇是寫你的本地DLL作爲一個COM DLL,並從那裏籌集COM派遣活動。通過創建此COM DLL的Interop,您可以直接在C#DLL中捕獲事件。但是如果你不熟悉COM編程,這條路線的學習曲線非常陡峭。