我正在寻找一个缺少的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不支持对象浏览的原因是什么?任何指向教程或书籍的指针都会受到这位初学者的赞赏!感谢。
答案 0 :(得分:2)
COM对象浏览器依赖于COM服务器的metadata (type libraries) exported (dll,exe,ocx等)。
问题是COM服务器不需要导出它实现的接口的任何元数据。不幸的是,我发现了很多这样的服务器(因此需要知道其他方式支持哪些CoClasses,Interfaces等)。
检查您的COM服务器(y.dll)是否包含名为“TYPELIB”的资源,类似于:
希望这有帮助。