我正在將我的解決方案從c#移動到C++。我已經創建了幾個原生C++ dll,他們很好。將原生dll連接到C++和c#都很容易。對於c#我使用P/Invoke方法執行和delegate
回調,我只是傳遞指向非託管內存並使用Marshall類閱讀它。創建可以從c#和C++中使用的c#dll
現在我有相反的情況 - 我需要創建C#
項目,現在從另一個C#
項目中使用,但以後我會重寫主項目,C++,所以我需要從C訪問C#
項目++。它應該只提供幾種方法:PlaceOrder(void* pointerToStruct)
CancelOrder(void* pointerToStruct)
和一個回調delegate OrderUpdated(void* pointerToStruct)
我正在尋找提示和示例。我怎樣才能創建C#項目,這將是可用的本地C + +和C#,並提供幾個方法+一個回調。
尤其是我現在不應該如何處理內存 - 我應該在c#上寫入非託管內存並從C++讀取它,還是應該在c#上寫入托管內存並以某種方式讀取C++中的託管內存。 。指向我在傳遞參數的結構應指向非託管內存或託管內存等
幾乎可以創建DLL導出表(除非你做它在IL或託管C++);也許創建COM更容易? –
COM是slooooow和複雜的,我正在寫低延遲軟件,它只是暫時的解決方案,所以我寧願簡單快捷的東西。 – javapowered
我有c#部分,我不需要重寫到C++。因爲一旦移植到linux後我將把它扔掉。但直到我需要從C++使用c#。 – javapowered