c sharp调用非托管c++代码

 

如何在C#中加载自己编写的动态链接库(DLL)
 
C#与DLL和COM的混合编程(1)-C#调用C++写的非托管的DLL中导出的函数
 
C#调用非托管DLL的APIs
 
 
 
心得:
1. int类型没有问题,其他object类型,比如string,有不少调用问题。比如返回值只能是int或者void
2. 注意encode的问题,char,wchar_t。建议使用wchar_t,要不中文有问题。因为在c#中默认都是unicode
3. 字符串函数使用方法:
c++dll中:
extern "C" __declspec(dllexport) void __stdcall Test(wchar_t * strInput, wchar_t * strOutput)
c#使用:
[DllImport("XXX.dll", EntryPoint = "Test", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern string Test(string strInput, StringBuilder strOutput);
其中,strInput是输入值,strOutput是返回值。
建议将c++dll拷贝到windows目录,方便调用。
StringBuilder要预先分配好足够的内存,要不会报错。所以在c++函数中要控制输出字符串长度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值