近期在做项目的过程中需要在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#类库。