c#或调用c中的dll函数

本文介绍了如何在C#中调用C语言编写的DLL函数,包括数据结构的重定义、使用using别名和unsafe关键字。同时提供了一个C#调用DLL时的参数对应表,详细列出了不同类型的非托管与托管类映射,以便于开发者进行跨语言交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在c、c++中有typedef定义。当要把c/c++中的程序移植到c#或调用c中的dll函数时,涉及到一些数据结构的重新定义。为了方便,可使用c#中的using 别名;对于指针,需加unsafe
如:

using boolean_T = System.Byte;

unsafe public struct emxArray_real_T
{
double* data;
int* size;
int allocatedSize;
int numDimensions;
boolean_T canFreeData;
}

C#调用DLL文件时参数对应表(每一行的(1)(2)(3)(4)与列名前序号相符合)

(1)Wtypes.h中的非托管类型 (2)非托管 C语言类型(3)托管类名 (4)说明
(1)HANDLE (2)void* (3) System.IntPtr (4)32 位
(1)BYTE (2) unsigned char (3)System.Byte (4)8 位
(1)SHORT (2)short (3)System.Int16 (4)16 位
(1)WORD (2) unsigned short (3)System.UInt16 (4)16 位
(1)INT (2)int (3) System.Int32 (4) 32 位
(1)UINT (2)unsigned int (3)System.UInt32 (4)32 位
(1)LONG (2) long (3) System.Int32 (4) 32 位
(1)BOOL (2) long (3)System.Int32 (4)32 位
(1)DWORD (2) unsigned long (3) System.UInt32 (4)32 位
(1)ULONG (2) unsigned long (3) System.UInt32 (4) 32 位
(1)CHAR (2) char (3) System.Char (4) 用 ANSI 修饰。
(1)LPSTR (2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值