通过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本质论》,这本书很复杂。
通过C#去调用C++编写的DLL的更多相关文章
- C#调用C++编写的DLL函数, 以及各种类型的参数传递 (转载)
C#调用C++编写的DLL函数, 以及各种类型的参数传递 1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int ...
- C#动态调用C++编写的DLL函数
C#动态调用C++编写的DLL函数 动态加载DLL需要使用Windows API函数:LoadLibrary.GetProcAddress以及FreeLibrary.我们可以使用DllImport在C ...
- 使用clr 调用C#编写的dll中的方法的全解释
使用clr 调用C#编写的dll中的方法的全解释1.数据库初始化:将下面这段代码直接在运行就可以初始化数据库了exec sp_configure 'show advanced options', '1 ...
- C++项目中采用CLR的方式调用C#编写的dll
1.注意事项:在编写C#DLL类库时,最好不要出现相同的命名空间,否则在C++中调用可能会出现编译错误.2.将C#的源码生成的“dll”文件复制到C++项目中的Debug目录下3.将C++项目属性设置 ...
- Delphi7调用DelphiXE编写的DLL问题
http://bbs.csdn.net/topics/380045353 用DelphiXE在WIN2008下编写一个访问WebServices的DLL ws.dll,只有一个输出函数,如下: fun ...
- C#调用C++编写的dll
界面还是C#写的方便点,主要是有一个可视化的编辑器,不想画太多的时间在界面上.但是自己又对C++了解的多一些,所以在需要一个良好的界面的情况下,使用C++来写代码逻辑,将其编译成一个dll,然后用C# ...
- Delphi 调用C# 编写的DLL方法
近来,因工作需要,必须解决Delphi写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行: 编写C#dll的方法都一样,首先在vs2005中创建一个“ ...
- C# 调用delphi编写的dll
技术实现 如何逐步实现动态库的加载,类型的匹配,动态链接库函数导出的定义,参考下面宏定义即可: #define LIBEXPORT_API extern "C" __declspe ...
- PB调用C#编写的DLL
C#以其简单易用,功能强大深受大家喜爱.PowerBuilder作为C/S的MIS开发工具,十分简单灵活,开发时间短,开发及维护成本低,一直是中小企业信息管理系统的首选开发工具.但是PB的局限性限制了 ...
随机推荐
- 【转】Android4.4(MT8685)源码蓝牙解析--BLE搜索
原文网址:http://blog.csdn.net/u013467735/article/details/41962075 BLE:全称为Bluetooth Low Energy.蓝牙规范4.0最重要 ...
- No setter found for property 'userDAO' in class 'com.ssh.service.impl.User1Service'
造成此问题的原因是: 在applicationContext.xml中引用 <bean id="userService" class="com.ssh.servic ...
- OpenCL memory object 之 Global memory (1)
本文转载自:http://www.cnblogs.com/mikewolf2002/archive/2011/12/17/2291239.html 这篇日志是学习AMD OpenCL文档时候的总结. ...
- ubuntu adb devices 找不到任何东西,安装驱动
在Android平台下做开发,adb总是需要使用到的,同时,因为linux没有windows这样操作傻瓜化,有些东西还是需要自行设置的,否则将会连接不上. 关于这些内容,google也有一定的描述,可 ...
- Netbeans代码配色主题大搜集
我用netbeans的原因之一就是因为其支持代码配色主题,这是个对于一个代码配色字体控来说是非常重要的一个功能.理所当然的,我也会收集各种配色主题来时常换换口味. 下面就是我目前收集的Netbeans ...
- xom报错 Exception in thread "main" java.net.UnknownHostException: file
Exception in thread "main" java.net.UnknownHostException: file at java.net.AbstractPlainSo ...
- java从mysql导出数据例子
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...
- 23讲 URL2
这是关于URL路由的小笔记. 为什么用使用URL路由呢? 我的想法是:用户在地址栏可以乱传参数,所以我们必须最出一些防范措施,防止出现用户看到的不友好界面. 例如地址栏的地址为:http://loca ...
- Android Butterknife框架配置
一.原理. 最近发现一个很好用的开源框架,蛮不错的,可以简化你的代码,是关于注解的.不多说直接进入使用步骤讲解. 二.步骤. 1.准备阶段,先到官网( http://jakewharton.githu ...
- 让Tomcat支持中文路径名和中文文件名
http://hdwangyi.iteye.com/blog/107709 Tomcat是Java开发者使用得较多的一个Web服务器,因为它占用资源小,运行速度快等特点,深受Java Web程序员的喜 ...