zoukankan      html  css  js  c++  java
  • C#调用C++动态库

    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);
  • 相关阅读:
    「考试」省选6
    「考试」省选5
    「考试」省选4
    「笔记」拉格朗日插值
    数学专测
    「笔记」$exlucas$
    「总结」$dp1$
    「总结」达哥数学专项
    「总结」筛法2
    「总结」莫反2
  • 原文地址:https://www.cnblogs.com/mymeng_feng/p/5091751.html
Copyright © 2011-2022 走看看