声明:
- 本博客为原创博客,主要讲述使用C#语言调用服务端SDK方式完成VMS客户端完整功能实现,转载请声明出处。
- 如有技术问题或需交流可直接联系本人邮箱:chuiwenwei@163.com
简述:
- 在C/S架构设计下,客户端与服务端进行通信有多种方式可选,常用的就是SDK,最大的有点便是便于厂家间平台对接。本篇将从多个方面详尽描述如何使用C#调用C++ SDK。
目录:
- 调用Dll
- 如何调用C++ Dll接口
- C++数据类型与C#数据类型对照表
- 结构体转换
- 多级嵌套结构体转换
- 回调函数转换
1.调用Dll
- 首先确定C++提供的Dll文件,一般厂家或是自己部门服务端部分都会提供详尽的Dll、h、lib文件及接口使用文档。对于C#开发只需使用Dll文件即可。此处我将假设开发者是将Dll文件放置于与可执行文件在同一目录下,比如你的可执行文件在C:\,那么将Dll文件也放置于这个目录下,便于开发调试。
2.如何调用C++ Dll接口
Dll接口定义格式简述:
C++ : extern + 返回类型 + _stdcall + 函数名称(参数定义);
C# : [Dllmport("接口所在Dll",SetLastError = true)]
public static extern +返回类型 + 函数名称(参数定义);
确定Dll中提供的接口部分,举例我使用的服务端提供的Dll名称为:CMS_ClientComm.dll,那么我调用此Dll中一个接口:CMS_Init()
C++ :extern int __stdcall CMS_Init();
C#: [DllImport("CMS_ClientComm.dll", SetLastError = true)]
public static extern int CMS_Init();
3.C++数据类型与C#数据类型对照表
C++ | c# |
int | int |
unsigned int | uint |
bool | byte |
float |