zoukankan      html  css  js  c++  java
  • 通过C#去调用C++编写的DLL

    这个问题缠了我2个小时才弄出来,其实很简单。当对方提供一个dll给你使用时,你需要去了解这个dll 是由什么语言写的,怎么编译的,看它的编译类型。这样即使在没有头绪时,你可以先尝使用一些比较热门的编译工具去解析它。比如gcc,reflector,ILSpy 都行。 

    关于C++写出来的dll,理论上也是一个dll,但更准确定义应该称为是一个特殊的dll。普通的dll,比如NOPI.DLL,我们只需要在项目中去引用它再加个namespace就可以去使用它内部提供的方法。而c++编译出来的dll 则需要你先去注册它的前提条件下,才能正常使用。C++一直都很高大上,有木有?那为什么我们要去注册它才能用呢?其实注册的目的很纯粹,就是把它加到注册表中。之所以会有这个操作,因为这个dll有读取注册表的来作为验证的需求。(如何注册,如下图)

    [win8.1 x64的环境下注册,如果你的系统是win7 x86 or x64 也是一样进入到命令栏中去进行,区别只是界面不一样而已]

    附:由c++编写的dll,都是x86的。但你系统即使是x64也不影响,所以注册失败一般不会是你系统版本问题

     

    还有很多依赖系统dll的,就是system32文件夹中的dll。如果你编写了一个引用系统的dll,那必须注册到系统里才能用。

    调用方式有两种:1.直接引用外部没注册的dll  2.把dll注册到系统里,然后程序就会到系统中去找这个组件

    注册成功后,先到你的项目的根目录下找到Bin目录,把dll添进去。 然后右键“添加引用”,找到“com”,再找到你需要的组件名称.下图只是本人的一个示例.其实这就是import come

    添加完成后,在页面上即可去调用他了,并且可以完整的看到这个dll内部都有什么方法

     对COM组件如果想深入的童鞋,你可以去研究《COM本质论》,这本书很复杂。

  • 相关阅读:
    【Docker】命令 restart
    【Docker】命令 rename
    小知识点笔记一(原始版)
    Java常用类——匿名对象
    Java常用类——Arrays工具类
    Java常用类——Scanner类
    Python怎么测试异步接口
    接口测试面试题
    Pycharm使用常见问题
    接口测试命令Httpie的使用
  • 原文地址:https://www.cnblogs.com/byvar/p/3914703.html
Copyright © 2011-2022 走看看