[英]Using C++ Class DLL in C# Application
我有一個非托管的C ++ DLL,它只導出一個類(不是COM ......它只是一個簡單的C ++類)作為它的接口。 我想在C#中使用這個類,但我被告知它不能僅僅導入到C#中。
在我的C#應用程序中使用此類的正確方法是什么?
假設類Foo的簡單方法:
然后你使你的c#代碼依賴於FooWrapper項目/ dll,並確保非托管dll與它一起正確部署,如何完成取決於非托管dll,但在同一目錄中通常就足夠了。
如果函數不依賴於類的實例,則更簡單的是P / Invoke
對於單個類庫,這個答案可能有點過分,但SWIG是一個很好的解決方案,用於“包裝”C / C ++類以供其他語言使用。 它適用於C#。
看到 http://www.swig.org/ 。
DllImport是你最好的選擇。 有一些數據類型按摩,特別是如果你傳遞結構,但你幾乎可以做任何事情。
您需要一個代理(GoF模式)中介來橋接托管/非托管邊界。
兩種選擇:
前者會更直接,后者有兩個步驟純C ++ - > COM - > .NET。
有時,提供自己的C接口更容易。 SWIG非常容易設置。 我使用托管C ++和C ++ / CLI,他們很好。 最簡單的只是做一個C包裝器(並且可以被任何其他語言使用,因為大多數人都有辦法調用C函數)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.