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本质论》,这本书很复杂。

  • 相关阅读:
    通过三个DEMO学会SignalR的三种实现方式
    [Asp.net]SignalR实现实时日志监控
    SignalR -- server push 利器
    Microsoft ASP.NET SignalR
    在 Asp.NET MVC 中使用 SignalR 实现推送功能
    asp.net signalR 专题—— 第一篇 你需要好好掌握的实时通讯利器
    asp.net signalR 专题—— 第二篇 对PersistentConnection持久连接的快速讲解
    后台管理UI推荐
    ASP.NET通用权限系统快速开发框架
    .NET通用基本权限系统框架源代码
  • 原文地址:https://www.cnblogs.com/byvar/p/3914703.html
Copyright © 2011-2022 走看看