2011-05-24 68 views

回答

2

对不起,但我在网上找到的最好的只是一个概述(http://www.securitypronews.com/it/applicationdevelopment/spn-19-20020115VisualBasicProjectFilesStructure.html)。

另请注意,VB窗体中使用的ActiveX控件将在* .frm文件中具有引用条目。

我猜你正在开发ActiveX项目(无论是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或类型库。


这里是我所知道的 - 从你上面的例子,

BF204980-5E29-4945-AEB5-DDB284C568D3表示ActiveX对象的GUID。

1.0指示ActiveX对象的版本。

0表示......我不知道。

..\Project1.dll是ActiveX DLL((或)所在位置的(相对)路径。

Project1是ActiveX对象的(友好)名称。

+0

此信息都是很好的建议。关键是编译你的dll/ocx的兼容性关闭,然后将该文件复制到CMP文件,并重新编译,兼容性设置为二进制,指向CMP文件作为参考文件(兼容)。如果你因为任何原因中断了compat,VB会警告你。但是请记住,您可以更改方法签名或添加新方法,并且不会在技术上破坏兼容性,但仍然会导致Probs在兼容性方面走在前面,所以在更改方法签名或添加新方法/属性等时要小心。 – DarinH 2011-05-24 17:28:15

+0

你非常希望得到答案。 – silentfrost 2011-05-24 18:42:20

+0

很好的答案。也有手册,虽然它没有解释这些参考http://msdn.microsoft.com/en-us/library/aa716294(v=VS.60).aspx – MarkJ 2011-05-24 21:11:34

6

引用的语法在[MS-OVBA]描述:

LibidReference  = "*\" LibidReferenceKind LibidGuid 
        "#" LibidMajorVersion "." LibidMinorVersion 
        "#" LibidLcid 
        "#" LibidPath 
        "#" LibidRegName 

<LibidReferenceKind>: 

%x47 (G) <LibidPath> specifies a Windows file path. 

%x48 (H) <LibidPath> specifies a Macintosh path.  

<LibidGuid>: The GUID of the Automation type library. 

<MajorVersion>: An unsigned integer that specifies the 
major version of the Automation type library. 

<LibidMinorVersion>: An unsigned integer that specifies the 
minor version of the Automation type library. 

<LibidLcid>: The LCID of the Automation type library. 

<LibidPath>: The path to the Automation type library. 

<LibidRegName>: The Automation type library’s display name 
+2

也是在Hex中(我有一个DLL是1e.0) – RoboJ1M 2012-07-16 14:05:06