码迷,mamicode.com
首页 > 编程语言 > 详细

C#调用C++动态库

时间:2016-07-11 12:11:08      阅读:124      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!