假设我有一个用Delphi编写的大型ActiveX库,我们称之为Lib1.dll。它包含多个接口。任务是将库重命名为Lib2.dll,这样另一个应用程序可以同时从Lib1和Lib2调用这两个方法。
我想用下面的方法做:


将Delphi项目重命名为Lib2(这将重命名该库)。
将* Lib1_TLB.pas *文件替换为* Lib2_TLB.pas *,其内容相同,但使用新的接口和共同类的GUID。
将新的GUID粘贴到Lib2.ridl。
从该ridl生成新的Lib2.tlb文件,应该没问题。


但事实并非如此。我收到了Delphi错误“找不到Lib1.ridl文件”。好的,将ridl和tlb.pas都重命名回Lib1,编译并生成ok,但是注册ActiveX服务器会使IDE崩溃。
请为我建议重命名lib的方法或使当前进度正常工作的方法。

最佳答案

我假设您正在使用Delphi的最新版本,该版本的COM接口使用.ridl文件,因此请记住,它是处理COM的核心单元。您可以先将ridl文件从Lib1.ridl复制并重命名为Lib2.ridl。然后在Lib2.ridl中,而不是_TLB.pas(会自动重新创建)中,重新生成库的GUID和同类的GUID。接口可能保持不变。之后,您应该能够生成tlb并刷新_TLB.pas,最后构建并注册新库。

09-20 21:07