2012-01-30 130 views
3

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

  1. 重命名为Lib2(将重命名库)的Delphi项目。
  2. 将具有相同内容的* Lib1_TLB.pas *文件替换为* Lib2_TLB.pas *,但使用新的接口和coclass GUID。
  3. 粘贴新的GUID到Lib2.ridl
  4. 生成新的Lib2.tlb文件从那个ridl,应该没问题。

但事实并非如此。我得到德尔福错误“无法找到Lib1.ridl文件”。好的,将ridl和tlb.pas重新命名为Lib1,编译& build ok,但注册ActiveX服务器会使IDE崩溃。 请给我一个重新命名lib的方法或如何使我当前的进度工作。

+4

为什么你想要有两个相同的ActiveX库和两个相同的类型库。我想你只是想通过COM类工厂创建接口的实例,请参阅['here'](http://delphi.about.com/library/weekly/aa121404a.htm)。 – TLama 2012-01-30 11:45:01

回答

0

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