首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

老马进来下解决方法

2012-02-09 
老马进来下请问你做的那个做导出函数的那个插件生成的dll为什么查看有5个导出函数。有一个是我加的,还有DLL

老马进来下
请问你做的那个做导出函数的那个插件生成的dll为什么查看有5个导出函数。有一个是我加的,还有DLLCanUnloadNow、DLLGetClassObject、DLLRegisterServer、DLLUnRegisterServer这几个,可不可以去掉?

[解决办法]
DLLCanUnloadNow、DLLGetClassObject、DLLRegisterServer、DLLUnRegisterServer

这四个函数是dll为COM加的输出函数,对于动态连接来说,客户进程会将所需的服务器组件加载进来(也就是加到客户进程的地址空间),这个时候的COM也叫做进程内服务器,dll必须导出DLLCanUnloadNow,这样组件就知道是不是可以卸载掉dll

DLLGetClassObject用来返回COM对象的类工厂指针,它被API函数CoGetClassObject调用(VB中由CreateObject()封装),这样客户进程就可以用这个类工厂的指针将对象实例化。

DLLRegisterServer、DLLUnRegisterServer用来实现dll的自注册
COM的一个重要的特性就是位置的透明性,只要注册,添加引用,随便放在什么地方都可以用这个组件
注册表里面会包含组件的CLSID, IID, PROGID等信息,这些都是通过这两个函数实现的

热点排行