背景
最近因為工作需要,需要在C++中調用Net類庫,所以特此總結一下,方便日后的使用。
整體環境為Visual Studio 2019 ,包括Net Framwork4.7和Core3.1,同時,文章也會對網上普遍文檔所缺乏的環境搭建,微軟MSDN的有關說明引用補充進來。
備注: 因為將demo代碼發布到了github上了,所以,可以保證改代碼和demo是可以運行調試的。
ps: 最近自己看網上的好多教程案例,各種調不通,給后面各位算總結了下資料吧。
常用方法
經過調查,發現主要存在如下幾種方法。
其中並沒有什么原創的東西,只是搬運工,將網上現有的知識文章匯總,重新實現,將部分原有文章未曾說明的部分,補充完善,對新人更加友好。如果有其它調用方法,歡迎和我溝通,我將補充進去。
優劣分析
Net類庫注冊為COM
調用方式為,將Net類庫開發為COM,注冊后,C++像調用其它COM組件一樣,調用Net類庫中的方法
優點:
- 編寫代碼簡單,調用方便
缺點:
- 需要注冊output,發布不夠簡單
C++/CLR支持調用Net類庫
C#常規編寫類,生產assembly,C++使用CLR編譯既可直接引用托管類。
優點:
- 編寫代碼簡單,調用方便
缺點:
- 需要了解C++ CLR語法(既不像C++,又不像C#,總之很奇怪)
C++通過非托管接口調用
C#常規編寫類,生產assembly,C++使用SDK提供的CLR非托管接口(CLRCreateInstance)進行調用。
優點:
- 傳統C#編程,傳統C++編程
缺點:
- 暫時還沒發現