我有3个.vbp项目属于小组。
我可以制作3和2的dll,当我想制作1的dll时。
我将项目引用1设置为项目2的正确dll。
但是,当我保存更改并重新打开vbg文件时。我已更改的引用未显示,它将恢复为dll的另一个版本。
我没有在COM工作,我无法继续前进。 任何意见或支持都受到高度赞赏。
答案 0 :(得分:7)
当您引用ActiveX或COM DLL和EXE时,您几乎无法控制实际使用哪个DLL或EXE文件,因为VB6严格来自GUID和Windows注册表。使用VB6和ActiveX以及保持理智的关键是理解二进制兼容性。 (见http://www.vbsight.com/BinaryComp.htm)。
以下是关于ActiveX / COM项目(无论是EXE,DLL还是OCX)的建议:
(1)了解二进制兼容性设置。
(2)最好使用.cmp(例如Project1.dll.cmp)为您的引用可执行文件添加后缀。当你查找二进制兼容性时,你会知道我的意思。
(3)在VirtualPC内部开发VB6 ActiveX项目; VB6 ActiveX开发给Windows注册表带来了很多磨损。
(4)当VB有理由找到ActiveX对象时,Reference =设置中DLL / EXE / OCX的文件路径将改变;它将与它在注册表中找到的任何东西一起使用(最新的注册胜利)。此外,还有“升级ActiveX控件”设置可以进行更改的项目属性。
(5)除了通过适当的二进制兼容性管理可以达到的程度之外,您几乎无法控制VB6将生成的GUID或类型库。
答案 1 :(得分:1)
如果对在VB6中编译的DLL / OCX使用二进制兼容性选项,则在重新编译内容后,现有VB6项目中的引用将被破坏。我们经常处理这个'问题'所以我们实现了VB6 Project References Update Utility来自动替换现有的.vbp项目中对ActiveX的引用。该实用程序是免费和开源的,并且很可能在相似的情况下为其他人节省了很多时间。