delphi - Delphi COM dll 有两个接口。只有一个 clsid 被注册
问题描述
我创建了一个 Delphi COM dll,它实现了两个不同的接口,每个接口都有自己的类 ID。它没有在 Delphi (XE7) IDE 中正确注册,但 regsvr32 在提升的命令提示符下非常高兴并说它成功了。
但是,两个接口中只有一个已注册,并且注册表中没有其他接口的 clsid 的迹象,并且通过尝试连接失败并出现未注册错误来确认。当然,我希望两个接口都注册。我最好的做法是什么?
解决方案
好吧,我并不是说这是正确的答案,但我导出了有效界面的 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"
推荐阅读
- html - Big Cartel - 在我的每个类别中添加描述文本
- botframework - MS 团队中的速率限制 Bot 框架 - 需要说明
- python-3.x - 用 var/obj 类型初始化字典变量
- excel - 从 Excel 调用 Word 时出错:此项目中的宏已禁用
- reactjs - 使用 FlatList 和 Animated 使 Header 向下滚动 - React Native
- asp.net-mvc - ninject with datacontext 和需要在 MVC 中静态实现
- javascript - 如果一个函数只用在另一个函数中,我应该把它放在里面还是外面?
- selenium - 如何选择图像的特定区域?
- c - 打印节标题的精灵名称
- css - chrome 上的 CSS 背景过滤器比 safari 上的 -webkit-backdrop-filter 慢得多