这个问题缠了我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本质论》,这本书很复杂。