我正在尝试在VB6中编译一些代码,它告诉我“模块之间的循环依赖关系”。它不会告诉我哪些模块具有这些依赖性。
有什么方法可以找到有关此问题的更多信息吗?
答案 0 :(得分:3)
您有项目形成一个循环的参考链。使用菜单项目,然后使用参考,以查看您的参考项目。然后对属于应用程序的所有其他项目执行此操作。绘制一个粗略的图表,指出什么链接到什么,在某些时候,你会发现参考循环回到其中一个项目。
您只需要关注自己创建的项目的引用。此外,您还需要检查您创建的包含自定义ActiveX控件的任何项目。这可以在菜单Project-> Components。
下找到很可能你会发现你引用的只有少数几个类。在这种情况下,您可以将它们分成另一个activex DLL /库,让原始项目引用而不是相互引用。
出现此问题的原因是因为COM依赖库中嵌入的类型库来调用类及其方法。引用的库以类似于C中的包含文件的方式包含在此类型库中。循环引用没有“底部”,因此COM无法到达最底层的库以形成类型库。
答案 1 :(得分:0)
我发现了另一个出现这种情况的解决方案。如果重命名库(项目/属性下的项目名称),则传递具有完全限定类型名称的对象引用,如:
Sub Example(ByVal myControl As Library.Classname)
然后你必须搜索并替换<图书馆>与< 。NewLibraryName> (包括前导空格和尾随点以防止不必要的匹配)。为FRM,BAS,CLS和CTL文件扩展名执行此操作。
Sub Example(ByVal myControl As NewLibraryName.Classname)
请注意,在执行上述操作之前,必须先修复CTL和FRM文件,以便首先加载项目(在获得循环依赖性错误之前)。与上述类似,该过程涉及替换"开始图书馆。"用"开始NewName。"
享受!