C#调用C++的dll文件
来源:互联网 发布:知乎怎么用邮箱注册 编辑:程序博客网 时间:2024/06/18 18:39
以加法为例,讲解该过程
首先我们介绍一下原理:
C#与C++的转换会经过以下几层转换
1. C# APP
2. C#接口类:C#数据 -> 纯C数据结果包装
3. C接口包装:纯C数据 -> C++输入
4. C++实现:C++处理
接下来我们介绍一下具体实现方法:
首先建立一个C#项目
文件--添加新建项目--Win32 控制台应用程序--AdderImpl
源文件--右键添加cpp文件
// the code is write in c#ifdef __cplusplusextern "C"{#endif__declspec(dllexport) int __cdecl add(int a, int b);#ifdef __cplusplus}#endifint add(int a, int b){return a + b;}
AdderImpl项目修改配置类型为动态库(.dll)
AdderImpl右键--生成
把该dll文件复制到
在testApp2右键--添加新建项--C#类--AdderWapper.cs
其中AdderWapper.cs中代码为:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Runtime.InteropServices;namespace TestApp{ class AdderWapper { [DllImport("AdderImpl.dll", CallingConvention = CallingConvention.Cdecl)] static extern private int add(int a, int b); static public int performAdd(int a, int b) { // convert c# data to c data // TODO: // call the c interface int ret = add(a, b); // convert result from c data to c# data // TODO: // return the result return ret; } }}
Program.cs中代码为:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace TestApp{ class Program { static void Main(string[] args) { int a = 3; int b = 5; int c = AdderWapper.performAdd(a, b); System.Console.WriteLine(c); } }}
生成,也就是让dll和exe在同一文件夹下
命令行运行exe文件
end
0 0
- C#调用C的DLL
- 使用C#调用C编译的DLL文件示例
- C#调用C/C++ dll文件 的简单示例
- C#调用C生成DLL文件
- C#调用C生成DLL文件
- [zz]C#调用C生成DLL文件
- C#调用C++DLL
- C#调用C++dll
- C#调用C++dll
- C#调用C++DLL
- c#调用c++DLL
- C# 调用C++dll
- C#调用C++DLL
- C#调用C++DLL
- C#调用C++DLL
- C#调用C++Dll
- C#调用C++DLL
- c# 调用dll文件
- session原理
- Linux中inode
- git学习笔记
- list排序
- IOI2009【BZOJ3351】 Regions【区域发展】
- C#调用C++的dll文件
- [noip2008tg] 火柴棒等式
- 文章标题
- HTML5部分全局属性
- C++多线程-第一篇-Atomic-原子操作
- 建议平面设计爱好者要学的软件,和一些CDR常见问题
- boost function用法详解
- 跨域请求之jQuery的ajax jsonp的使用
- 【大风】水仙花数最简短,运行速度最快的代码