C++与C#互调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的“调试-异常”,打开异常窗口,展开选择“ManagedDebuggingAssistants\PInvokeStackImbalance”,去掉对应的“引发”可选框。
二、c++调用c#dll的步骤(可直接使用C#类):
1.创建c++控制台应用程序
2.拷贝c#dll到c++工程根目录
3.工程属性->配置->常规->公共语言运行时支持->clr
工程属性->配置->c/c++常规->调试信息格式->zi
工程属性->配置->c/c++常规->公共语言运行时支持->clr
#using"CSharpDllProject.dll" usingnamespaceCSharpDllProject;
三、c#调用c++类步骤(c++/cli,可直接使用C++类)
c++/cli简介:C++/CLI标准是基于Microsoft提交的标准C++与通用语言基础结构(CommonLanguageInfrastructure)结合的技术
1.使用c++/cli语法对标准c++类进行包装(可采用聚合模式,引用标准c++类,实现所有标准c++的方法)
2.c#引用c++dll后,可直接new出一个c++/cli创建的托管类对象
希望本文所述方法对大家有所帮助。