C++调用Net类库概述

Posted tonyctp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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++编程

缺点:

  • 暂时还没发现

参考

分享 N种方法使用C++调用C#.NET库

以上是关于C++调用Net类库概述的主要内容,如果未能解决你的问题,请参考以下文章

C#调用C++类库的几种方式

c# 调用c++类库控制usb继电器

C++调用C#dll类库中的方法(非显性COM)

C#导入c++ dll报找不到dll文件 masm32调用c++类库

PowerShell中执行.net类库

如何在win32 C++控制台应用程序中调用uwp类库