您的位置:程序门 -> vb -> 基础类



vb中修改ocx重新编译后,将原来的ocx覆盖,一定要重新注册吗,注册时是在注册表里写ocx的哪些信息,什么机制


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vb中修改ocx重新编译后,将原来的ocx覆盖,一定要重新注册吗,注册时是在注册表里写ocx的哪些信息,什么机制[已结贴,结贴人:callwolf]
发表于:2008-01-17 15:40:37 楼主
为什么dll不需要重新注册,把原来的覆盖就行了呢
发表于:2008-01-17 15:47:541楼 得分:0
不重新注册可以么,有什么不同之处
发表于:2008-01-18 15:09:592楼 得分:4
新建bat文件   就可以完成  
copy   msadodc.ocx   %windir%\system32  
regsvr32   %windir%\system32\msadodc.ocx
发表于:2008-01-18 17:10:053楼 得分:4
工程—> 属性,在“component”选项卡中,将vertion   compatibility设置为"binnary   compatibility"

这样如果你的组件接口一点没变,guid也不会变,重新编译后直接覆盖原来的组件即可。
不过如果接口变了,就只能照楼上说的重新注册了。
发表于:2008-01-18 22:29:114楼 得分:4
选二进制兼容就不必注册了.当然接口改了就必须要注册.
发表于:2008-01-19 20:27:425楼 得分:0
我选了二进制兼容了,我在试试
发表于:2008-01-19 20:57:216楼 得分:8
楼主可以去查一下com的原理和思想。

vb中的类和对象都是基于com的,ocx和activex都是com技术应用的产物。

com为每一个类生成一个guid(全局唯一标识符),你每次重新生成不同的ocx就需要新的guid注册,这样是为了保证组件对象的兼容性。

com为了保证这样的兼容(其实就是要保证被调用的对象在版本变化后,调用者调用它不会出问题),采用了为每个类生成不同的id来标识,以及把接口和实现分开的形式。
如果在生成的时候选择严格的二进制兼容,那么在接口不变的情况下就可以不用重新注册。

dll里面的接口改变了也需要重新注册的,不然很容易出问题,要么就为不同版本的dll文件做不同的命名,不能直接替换。
发表于:2008-01-21 10:32:247楼 得分:0
多谢各位了


快速检索

最新资讯
热门点击