目录
准备C语言程序
unsigned int Add(unsigned int a, unsigned int b){
return a+b;
}
Visual studio创建工程
dll生成
添加C语言文件
创建并完善.h文件
extern "C" _declspec(dllexport) unsigned int Add(unsigned int a, unsigned int b);
C语言输入参数和C#输入参数之间的匹配
1 C语言输入是指针地址和长度,C#对应数组Byte[]和长度
//size是代表从开始指针地址,到结束指针地址的长度;
extern "C" _declspec(dllexport) unsigned int crc32(unsigned int size, const unsigned char* buf);
//size为buf的长度
public extern static int crc32(int size, byte[] buf);
2 C语言输入参数中包含返回值,C#使用对应的数据类型
extern "C" _declspec(dllexport) void encrypt_decrypt_Data(unsigned char* datapt, unsigned long dataL,unsigned char model,unsigned long MK[]);
public extern static void encrypt_decrypt_Data(byte[] datapt, int dataL, int model, UInt32[] MK);
//这是一个加密算法的C语言转C#,
//C语言中的处理方式是,对从datapt指针地址开始到datapt+dataL指针地址存的所有数据依次进行加密处理,最后处理的数据还是存放在datapt指针地址对应的内存中。
//在C#中,只需要传入byte[]数组,传入参数时,byte[]数组就是加密前的数据,然后调用C函数生成的dll,调用后byte[]数组就是加密后的数据。
生成dll
dll应用
加载一个创建好的C#桌面工程
打断点,点击启动,可以看到c的值是3,调用了c语言中的Add输出结果