簡體   English   中英

在C#中包裝Visual C ++

[英]Wrapping Visual C++ in C#

我需要使用C ++進行一些過程注入,但是我更願意將C#用於除底層內容以外的所有其他功能。 我聽說過“函數包裝”和“封送處理”,並且已經在Google上進行了大量搜索,並且在這里和那里發現了一些信息,但是我仍然很缺乏。

我按有用性順序閱讀的內容;
http://msdn.microsoft.com/zh-CN/library/ms235281(VS.80).aspx
http://www.drdobbs.com/cpp/184401742
http://geeklit.blogspot.com/2006/08/calling-c-lib-from-c.html

如何將所有較低級別的內容(本機C ++)包裝在C#中,以便可以用更熟悉的C#語言輕松地命令這些功能?

非常感謝您提供有關該主題的任何信息。

我認為P / Invoke確實是最簡單的方法:

  • 非托管 C ++中創建一個DLL,其中包含執行注入所需的所有功能。
  • 在您的C#代碼中,聲明一些static extern方法,並使用DllImport屬性將它們指向您的C ++ dll。 有關更多詳細信息,請參見arul其答案中提供的鏈接。

請注意,P / Invoke不限於“ Windows API函數”,您可以調用任何本機DLL公開的函數。

P / Invoke的潛在缺點是您必須為C ++函數提供簽名,可能指定一些不太明顯的編組。 在這種情況下,您可以考慮構造一個COM服務器而不是“普通” DLL,並使用COM互操作從C#調用代碼。

您要使用P / Invoke,請參閱《 MSDN雜志》

如果您不想使用Pinvoking,請創建一個托管的C ++應用程序。 使用本機C ++進行過程注入。 使用托管的c ++可以為該本機行為創建一個.NET友好界面。 然后可以從C#中調用它。

暫無
暫無

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

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