为什么我不能浏览dll来计算其中的内容?:“某些组件无法浏览”

时间:2012-12-16 00:51:52

标签: windows dll com objectbrowser

我正在寻找一个缺少的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不支持对象浏览的原因是什么?任何指向教程或书籍的指针都会受到这位初学者的赞赏!感谢。

1 个答案:

答案 0 :(得分:2)

COM对象浏览器依赖于COM服务器的metadata (type libraries) exported (dll,exe,ocx等)。

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

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

COM typelib resource

希望这有帮助。