C++调用Net类库概述
背景
最近因为工作需要,需要在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++编程
缺点:
- 暂时还没发现