C# 编译程序引用C++DLL托管动态链接库实例

构建 C# 程序引用C++DLL托管动态链接库

前言

1、统一框架版本

使用微软编程工具:VS2022,统一采用 .net framework 4.0框架,C++ DLL托管动态链接库和C# 引用 C++ DLL 程序的框架版本必须一致,不统一框架会导致程序无法编译(2个项目在同一个解决方案里时)或无法正常引用DLL库。

2、统一编译平台

C#应用程序与C++ DLL托管动态链接库,统一编译为 X64 或 X86,否则无法正常引用DLL库。

3、C++ 托管动态链接库的优点

3.1、C++ 托管动态链接库引用方便简单

C# 调用C++.DLL动态链接库时,构建与 C# 程序进行互操作的C++.DLL动态链接库有 3 种方法,其中托管动态链接库最方便,在 C# 中直接引用,即可引用C++.DLL的类。

3.2、C++ 托管动态链接库加快了程序构建和重复利用

C++ DLL 托管库,加快了程序构建和重复利用,且运行速度快。
C++库已经存在并且经过了充分测试和验证,需要被C#项目重复使用时。
C++编写的库中包含高性能计算、海量数据处理等需要使用底层语言实现的操作时,可以考虑将这些操作封装为动态链接库供C#调用。
在跨平台开发时,C++可在多个平台上运行,通过封装为dll,可以让C#项目也能够在多个平台上运行。
需要将不同的功能模块拆分成独立的组件,C++编写的dll可以作为一个独立的组件,供C#项目或其他语言的项目调用。
通过调用C++编写的dll可以兼顾高性能和高开发效率。
C++作为一种系统级编程语言,可以访问系统底层资源,如内存、磁盘、网络等,C#调用C++编写的dll可以实现访问这些底层资源的功能,从而提供更多的功能。

3.3、C++ 托管动态链接库源代码更加安全

C++ 托管动态链接库可以保障源代码不容易反编译泄露。程序核心代码使用C++构建,保护了代码的著作权利。界面和简单的代码使用C# 和 VB.NET 构建,因为C# 和 VB.NET 很容易反编译出源代码。

4、构建与 C# 程序进行互操作的C++.DLL动态链接库的三种方法

4.1、使用DllImport特性构建DLL库

在C++中封装为一个dll,并导出函数和过程:
在C#项目中需要使用DllImport特性导入这个dll,并调用其中的函数或过程。

4.2 、使用C++/CLI构建(我称之为:C++DLL托管动态链接库)

C++/CLI是一种结合了C++和CLR(Common Language Runtime)的语言,它可以编写针对.NET Framework/CLR的代码,同时也可以访问C++的底层资源。因此,我们可以使用C++/CLI来封装C++库,并将其作为dll供C#调用。
需要注意的是,当使用C++/CLI封装C++库时,需要确保两者所使用的Runtime是相同的,编译平台也要一致。比如,如果C++库是使用静态连接的方式与CRT(C Runtime)链接的,那么我们需要在C++/CLI项目的属性中设置“/MT”选项,以保证代码使用相同的CRT版本。

4.3 、使用COM组件构建

COM是微软推出的一种二进制接口标准,它可以让不同的应用程序之间以二进制码互相通信。
将Dll封装为一个COM组件。需要创建一个类,其中包含COM接口和类工厂。

一、构建 C++ DLL托管动态链接库

1、VS2022创建新项目,

在这里插入图片描述

2、选择C++、Windows、库,选择Windows 桌面向导,点下一步,

在这里插入图片描述

3、为项目命名,并选择项目目录,开始创建项目,

在这里插入图片描述

4、配置新项目中,选择动态链接库,只勾选空项目,点确定,创建项目完成。

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中游鱼

获取完整源代码,提高工作效率

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值