1

我正在寻找一个丢失的 COM 接口X,我怀疑它是在Y.dll. 我可以使用

grep X Y.dll

上面写着“匹配”。万岁,怀疑得到证实!

唉,当我在 Visual Studio Express 中使用对象浏览器,尝试添加Y.dll到我的自定义组件集时,我在弹出窗口中收到错误:“无法浏览某些组件”。

那么我不能浏览这个dll的原因是什么?是否可以有意或无意地保护、隐藏、保护或隐藏 COM 接口?显然我需要一个底漆!

官方上,所有微软对此的了解似乎普遍缺乏洞察力:

当您尝试在“组件选择器”对话框中添加不支持对象浏览的文件类型(例如 .htm 和 .txt 文件)时,通常会发生此错误。对象浏览器支持 .bsc、.olb、.tlb、.dll、.exe 和 .ocx 等文件类型。

说真的,dll或exe不支持对象浏览的原因是什么?这个初学者将不胜感激任何指向教程或书籍的指针!谢谢。

4

1 回答 1

2

COM 对象浏览器依赖于COM 服务器(dll、exe、ocx 等)导出的元数据(类型库)。

问题是 COM 服务器不需要导出任何关于它实现了哪些接口的元数据。不幸的是,我发现了很多这样的服务器(所以需要知道其他方式支持哪些 CoClass、接口等)。

检查您的 COM 服务器 (y.dll) 是否包含名为“TYPELIB”的资源,类似于:

COM 类型库资源

希望这可以帮助。

于 2012-12-16T16:03:08.567 回答