首页 > 编程语言 > 详细

C#调用C++动态库

时间:2016-07-11 12:09:53      阅读:329      评论:0      收藏:0      [点我收藏+]

1、若C#调用VC的动态库,而dll中使用了MFC则须将MFC静态链接到dll中。

2、C#调用C++的动态库有三种方法:COM组件、托管代码、非托管代码。

  COM组件需客户端注册,若客户无管理员权限则无法使用;

  托管代码可以将dll中的类导出,但需要写托管代码,添加工作量且代码看上去有点**;

  非托管代码不能导出dll中的类,只能导出函数,但好处是dll比较正统,可以给C/C++/C#使用。

3、C#调用C++动态库时需留意参数传递问题,dll中的接口字符串类型最好用char*。

4、传入参数string对应接口中的char*, out 参数用StringBuilder, 注意使用unsafe。若在其它类中使用导出函数,需使用public关键字。

[DllImport(@"HIDUSBLib.dll", EntryPoint = "Receive")]
public extern unsafe static bool Receive(string devName,
                                                            [MarshalAs(UnmanagedType.LPStr)]StringBuilder buf,
                                                            int bufLen,
                                                            int* nRecvLen,
                                                            int timeout);

 

C#调用C++动态库

原文:http://www.cnblogs.com/mymeng_feng/p/5091751.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!