C#调用C/C++ DLL方式总结

本文总结了C#调用C/C++ DLL的各种方式,包括直接调用导出函数、处理多字节参数、回调函数以及结构体传递。详细介绍了C#中如何声明DLL导入、设置调用约定和字符集,以及处理回调函数和结构体的细节。

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

#C#与C/C++ DLL交互方式总结

C#调用C/C++ DLL导出

C/C++的导出函数:

int __stdcall AFunc(wchar_t* str)
{
	//ugsdifgoisuhfgiosugdtfuywegouy
	return 0;
}

C#声明:

[DllImport("xxxx.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]
internal static extern int AFunc(char[] str);

最前面的为dll模块名称

CharSet声明char[]字符格式,这里设置为Unicode(UTF-16);

CallingConvention = CallingConvention.Winapi 设置函数调用规则

使用方法很简单:

void func()
{
	string str = "HelloWorld";
	AFunc(str.ToArray());
}

如果C/C++的形参是多字节,就会麻烦一些:
C/C++:

int __stdcall AFunc(char* str)
{
	//ugsdifgoisuhfgiosugdtfuywegouy
	return 0;
}

C#声明:

[DllImport(&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值