首页 > 解决方案 > Delphi COM dll 有两个接口。只有一个 clsid 被注册

问题描述

我创建了一个 Delphi COM dll,它实现了两个不同的接口,每个接口都有自己的类 ID。它没有在 Delphi (XE7) IDE 中正确注册,但 regsvr32 在提升的命令提示符下非常高兴并说它成功了。

但是,两个接口中只有一个已注册,并且注册表中没有其他接口的 clsid 的迹象,并且通过尝试连接失败并出现未注册错误来确认。当然,我希望两个接口都注册。我最好的做法是什么?

标签: delphicom

解决方案


好吧,我并不是说这是正确的答案,但我导出了有效界面的 clsid,编辑了文件,更改了 GUID 并将其合并回注册表。它现在可以在两个接口上运行,尽管它们在不同的线程上(dll 是多线程的 - 永远不会沉闷!)。

虽然这样做,但感觉不对劲!这是我编辑的文件。仅更改了 GUID。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{C5EF04CB-63D6-4184-9873-2ADCF6C26EF8}]
@="MyRDP"

[HKEY_CLASSES_ROOT\CLSID\{C5EF04CB-63D6-4184-9873-2ADCF6C26EF8}\InprocServer32]
@="C:\\dev\\VirtualChannels\\Client2\\Client2.dll"
"ThreadingModel"="Free"

[HKEY_CLASSES_ROOT\CLSID\{C5EF04CB-63D6-4184-9873-2ADCF6C26EF8}\ProgID]
@="Client2.Plugin"

推荐阅读