zoukankan      html  css  js  c++  java
  • 关于C#客户端引用C++ dll的问题

      近期在做项目的过程中需要在Winform客户端项目引用由C++编译的DLL,于是对相关的内容进行了一些研究,有几点心得总结如下。

    第一步是制作要引用的类库:

    (1)首先拿到C++的dll,需要注意的是,dll里面开发的方法必须符合C风格,不符合可以向外再封装,否则无法找到EntryPoint。

    (2)然后在开始菜单按照路径  "Microsoft Visual Studio 2008/Visual Studio Tools/Visual Studio 2008命令提示"打开Visual Studio 2008命令提示的控制台工具,

    输入dumpbin -exports [C++ dll的路径],这里"C++ dll的路径"可以左键按住dll拖入控制台产生。按enter键就会出现C++ dll内公开的方法及对应的EntryPoint。

    (3)这里列出类库中对登陆接口的引用,其他方法的引用与之相似。

    //登录
    [DllImport("RestApiClient4CSharp", EntryPoint="?login_4CSharp@@YA_NPBD000PADI@Z")]
    public static extern bool login_4CSharp(string server, string login_id, string password, string license,
    StringBuilder errBuf, UInt32 errBufSize);

    (4)将引用的C++ dll和lib文件设置为内容始终复制。

    (5)再做一些测试程序测一下,类库就制作完成了。

    第二步就是Winform客户端对C#类库的引用:

      这里,我碰到一个问题,明明是项目中的另一个类库项目需要引用此C#类库,可是引用之后,总是报错"找不到xxx.dll模块",后来发现,在启动项目中也必须引用一下此C#类库。

  • 相关阅读:
    51nod 1179 最大的最大公约数 (数论)
    POJ 3685 二分套二分
    POJ 3045 贪心
    LIC
    HDU 1029 Ignatius and the Princess IV
    HDU 1024 Max Sum Plus Plus
    HDU 2389 Rain on your Parade
    HDU 2819 Swap
    HDU 1281 棋盘游戏
    HDU 1083 Courses
  • 原文地址:https://www.cnblogs.com/Robert-huge/p/4028269.html
Copyright © 2011-2022 走看看