博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++与C#互调dll的实现步骤
阅读量:6374 次
发布时间:2019-06-23

本文共 1044 字,大约阅读时间需要 3 分钟。

这篇文章主要介绍了C++与C#互调dll的实现步骤,dll动态链接库的共享在一些大型项目中有一定的应用价值,需要的朋友可以参考下

本文实例展示了C++与C#互调dll的实现步骤,在进行大型项目共享dll动态链接库中可以用到。具体方法如下:

一、C#调用C++ dll步骤(只能导出方法):

1. c++建立空项目->源文件文件夹中添加cpp文件和函数

2. c++属性设置中,配置类型设置为动态库dll,公共语言运行时支持改为/clr
3. c#引用c++的dll
4. c#声明c++的方法,并添加 DllImport特性
5. c#工程属性设置为:目标平台x86
6. 注意方法的类型匹配
7. 引发PInvokeStackImbalance异常:注意:C++的"_declspec"和C#的“CallingConvention=CallingConvention.Cdecl”

另外,可以通过VS的异常窗口,取消掉对 PInvokeStackImbalance异常的检测

点击VS的“调试 - 异常”,打开异常窗口,展开选择“Managed Debugging Assistants\PInvokeStackImbalance”,去掉对应的“引发”可选框。 

 
二、 c++调用 c# dll的步骤(可直接使用C#类):

1. 创建c++控制台应用程序

2. 拷贝c# dll到c++工程根目录
3. 工程属性->配置->常规->公共语言运行时支持->clr
工程属性->配置->c/c++常规->调试信息格式->zi
工程属性->配置->c/c++常规->公共语言运行时支持->clr

#using "CSharpDllProject.dll"using namespace CSharpDllProject;

三、 c#调用c++类步骤(c++/cli,可直接使用C++类)

c++/cli简介:C++/CLI标准是基于Microsoft提交的标准C++与通用语言基础结构(Common Language Infrastructure)结合的技术

1.使用c++/cli语法对标准c++类进行包装(可采用聚合模式,引用标准c++类,实现所有标准c++的方法)
2.c#引用c++ dll后,可直接new出一个 c++/cli创建的托管类对象

希望本文所述方法对大家有所帮助。

引文链接;

参考书籍:《精通.NET互操作PInvoke,C++Interop和COM Interop》

转载地址:http://agjqa.baihongyu.com/

你可能感兴趣的文章
翻译:SockJS-node文档(一)
查看>>
MySQL中DATE_FORMATE函数内置字符集解析
查看>>
View Programming Guide for iOS_读书笔记[正在更新……]
查看>>
排查VMWare虚拟机的性能问题
查看>>
走在网页游戏开发的路上(十一)
查看>>
yum安装Apache Web Server后各个文件存放位置
查看>>
【ASP.NET Web API教程】3.4 HttpClient消息处理器
查看>>
O2O和B2C、C2C的区别
查看>>
linux学习笔记
查看>>
c++11实现c++14的optional
查看>>
C# 中的EventHandler
查看>>
windowsx下用vmware安装apple mac os系统后忘记登录密码
查看>>
Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改
查看>>
面向对象设计
查看>>
C# 6.0可能会支持模式匹配了
查看>>
[转]手工实现RTTI
查看>>
register_shutdown_function函数详解--脚本退出时执行回调函数
查看>>
IIS OCIEnvCreate failed with return code -1
查看>>
关于CCRANDOM_0_1
查看>>
OI分类
查看>>