[英]using c# dll in project c++
我想在c ++項目中使用c#(visual studio 2008)制作的dll(visual studio 2003)。 怎么做 ? 請嘿嘿
不僅僅是COM互操作, MSDN FAQ還列出了鮮為人知的方法:
2.2如何從本機Visual C ++調用.NET程序集?
基本上有四種方法可以從本機VC ++代碼調用.NET程序集。 Microsoft All-In-One代碼框架具有演示方法的工作示例。
Native VC ++模塊調用CLR Hosting API來托管CLR,加載和調用.NET程序集。 (一體化代碼框架示例代碼:CppHostCLR)
如果.NET程序集可以作為COM組件公開,則本機VC ++模塊可以通過.NET - COM interop調用.NET程序集。 (All-In-One代碼框架示例代碼:CppCOMClient)
反向PInvoke:托管代碼調用本機傳遞本機代碼可以回調的委托。 (多合一代碼框架示例代碼:CSPInvokeDll)
如果允許包含本機VC ++代碼的模塊啟用CLR ,則本機VC ++代碼可以通過“It Just Works”或“IJW”機制直接調用.NET程序集。 (All-In-One代碼框架示例代碼:CppCLIWrapLib)
在將“Resolve #using References”(Project-> C / C ++ - > General)編譯器選項設置到包含所需程序集的目錄之后,然后在代碼中添加這樣的行。
#using <NiftyAssembly.dll>
您不能直接使用非托管C ++代碼中的.NET程序集。 一種可能的解決方案是使用regasm.exe實用程序將程序集公開為COM對象,然后從C ++中使用它。 請注意,需要作為COM對象公開的.NET類型可能需要使用[COMVisible(true)]
屬性進行修飾,並且仍然需要在運行C ++代碼的目標計算機上安裝.NET框架。
有很多方法可以做到這一點。
C#DLL是COM DLL嗎? 如果是這樣,您可以使用常規COM API /規范在C ++程序中訪問它。 有許多關於使C#DLL COM可見的教程。 它並不困難,基本上只有一些編譯開關和C#屬性。
否則,您可以使用/ clr編譯器開關編譯C ++項目嗎? 如果是這樣,您可以使用Using Directive直接導入C#DLL。
正如達林所說,一種方式是通過COM。 另外兩種方式(我知道)是:
制作庫文件[.Tlb]文件然后我們才能使用dll。 您必須制作原始c#DLL的.TLB(類型庫文件),並在VC ++代碼中使用該.TLB庫。 為此,您必須在您的電腦上注冊.TLB文件,並且必須在您的vc ++ apllication中導入該.TLB文件。 編寫C#DLL時,請記住使用將在類中實現的接口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.