C#封装C++DLL
1、新建一个C#-Windows-类库(用于创建C#类库(.dll)的项目)类型的工程
2、对于普通C++函数
XXXX_API void cppFun(int i);
在cs代码中添加
[DllImport("c++xxxx.dll")]
public static extern void cppFun(int i);
3、对于C++中的结构体,因为C++中结构体默认访问控制为public,而C#中结构体默认为private,所以要显示指定一下
typedef struct {
char sDVRIP[16]; /* DVR IP地址 */
char sDVRIPMask[16]; /* DVR IP地址掩码 */
DWORD dwNetInterface; /* 10M/100M自适应,索引 */
WORD wDVRPort; /* 端口号 */
BYTE byMACAddr[MACADDR_LEN]; /* 服务器的物理地址 */
}NET_POSA_ETHERNET;
C#对应
public struct NET_POSA_ETHERNET
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sDVRIP; //DVR IP地址
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string sDVRIPMask; // DVR IP地址掩码
public uint dwNetInterface; //网络接口 1-10MBase-T 2-10MBase-T全双工 3-100MBase-TX 4-100M全双工 5-10M/100M自适应
public uint wDVRPort; //端口号
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public byte[] byMACAddr; //[MACADDR_LEN]; //PPPoE用户名//服务器的物理地址
}
最新文章
- win10使用技巧之如何打出偏僻字母
- 【OPENGL】第三篇 着色器基础(一)
- windows 10启动盘制作工具
- 22.python笔记之web框架
- [kuangbin带你飞]专题六 最小生成树
- java 如何从配置文件(.properties)中读取内容
- VMware vSphere服务器虚拟化实验十五 vCenter vShield Manager
- ibatis参数传递小技巧 - 疯狂的菠菜 - ITeye技术网站
- [leetcode-572-Subtree of Another Tree]
- ssi服务器端指令详解(shtml)
- webmagic 基本的方法
- 一篇关于Asp.Net Model验证响应消息的问题处理
- Catalog
- 11个炫酷的Linux终端命令大全
- 第四篇 - 爬取前程无忧python相关工作
- Node.js是用来干嘛的
- minicom的安装及配置
- Redis学习系列三List列表
- How to Pronounce ‘to the’ in a Sentence
- 再学Java 之 形参个数可变函数
热门文章
- 【转】GATK使用方法详解(包含bwa使用)
- POJ 1845 Sumdiv
- Keepalived高可用集群介绍
- BZOJ1452——[JSOI2009]Count
- [BZOJ1901]Zju2112 Dynamic Rankings
- style=";visibility: hidden"; 和 style=“display:none”区别
- 加载状态为complete时移除loading效果
- BZOJ 2342: [Shoi2011]双倍回文
- Fibonacci 2
- IN和EXISTS的详解