簡體   English   中英

創建可以在c#和c ++中使用的c#dll

[英]create c# dll which can be used from both c# and c++

我正在將解決方案從c#轉移到c ++。 我創建了幾個本地c ++ dll,它們就很好了。 將本機dll連接到c ++和c#很容易。 對於C#,我使用P / Invoke進行方法執行,並使用delegate進行回調,我只是將指針傳遞給非托管內存,然后使用Marshall類讀取它。

現在我遇到了相反的情況-我需要創建一個C#項目,現在可以從另一個C#項目中使用它,但是稍后我將把主項目重寫為C ++,因此我需要從C ++訪問C#項目。 它應該只提供幾種方法: PlaceOrder(void* pointerToStruct) CancelOrder(void* pointerToStruct)和一個回調delegate OrderUpdated(void* pointerToStruct)

我在尋找提示和示例。 如何創建可以在本機C ++和C#中使用的C#項目,並提供幾種方法和一個回調。

特別是我現在不應該對內存做些什么-應該在c#處寫入非托管內存並在c ++處讀取它,還是應該在c#處寫入托管內存並以某種方式讀取c ++中的托管內存...指向結構的指針我在參數處傳遞的應該指向非托管內存或托管內存等。

您可能需要創建COM組件: 在.Net中創建COM組件和ActiveX控件

如果您正在Windows8中進行開發,則可能會想到創建Windows組件:

在C#中創建Windows運行時組件

用C#編寫的dll的問題在於不可能創建導出表(將靜態方法標記為要導出的表):C#中有DllImportAttribute但沒有DllExportAttribute 不過有兩種方法:

  1. 在為此專門設計的托管C ++上(至少部分地)編寫dll。
  2. 在C#源代碼編譯后更改生成的IL:例如http://winch.pinkbile.com/wiki/index.php/Main/Dlltool http://www.codeproject.com/Articles/37675/Simple-Method-of-DLL -export-而不-C-CLI

也可以看看

是否可以像VS C ++一樣從C#DLL導出函數?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM