Dll “Oleview错误”;加载类型库时出错;?

Dll “Oleview错误”;加载类型库时出错;?,dll,com,typelib,oleview,Dll,Com,Typelib,Oleview,类型库声明应用程序或动态链接库(DLL)公开的类、接口、常量和过程。类型库通常是程序文件中的资源;它也可以是扩展名为.tlb或.olb的独立二进制文件 因此,是否有可能某些DLL仍然公开接口而没有声明为TypeLib 实际上,我正试图从oleview打开一个dll,它会显示错误消息“错误加载类型库” 根据我的理解,如果我们有从DLL公开的接口,那么它应该由oleview打开,否则它不能有公开的接口或函数 我们有dll公开接口,但仍然不能被Oleview查看的任何可能性。类型库可能无法被Olevi

类型库声明应用程序或动态链接库(DLL)公开的类、接口、常量和过程。类型库通常是程序文件中的资源;它也可以是扩展名为.tlb或.olb的独立二进制文件

因此,是否有可能某些DLL仍然公开接口而没有声明为TypeLib

实际上,我正试图从oleview打开一个dll,它会显示错误消息“错误加载类型库”

根据我的理解,如果我们有从DLL公开的接口,那么它应该由oleview打开,否则它不能有公开的接口或函数


我们有dll公开接口,但仍然不能被Oleview查看的任何可能性。

类型库可能无法被Oleview查看-这并不是世界上最稳定的软件。这并不是说没有类型库,或者这样定义的接口将不可用

。。。有可能某个DLL仍然存在吗 公开接口而不作为 声明为TypeLib

对。您可以拥有一个没有tlb的COM DLL(尽管它不是VC++在ATL项目中默认为您制造的)

我们有没有可能 正在公开接口,但仍然无法 由Oleview查看

只是一个粗略的猜测(甚至不确定它的建议是否正确),但您的DLL是否会包含一个引用它无法定位的外部tlb的tlb


此外,您的TLB可能包含OLEView无法消化的不受支持(可能是自定义)类型。它纯粹是一种双界面DLL吗?

首先,您应该使用File->View Typelib打开库,而不是按工具栏按钮。这是一个典型的错误


然后,您可以很容易地拥有一个在资源中没有typelib的in-proc-COM服务器,但是后期绑定和默认封送将不适用于它,否则它将正常工作。当您实现一组外部定义的接口(例如IFilter)并且确信没有人会在COM服务器上使用后期绑定或封送时,通常会这样做。

可以创建匿名COM组件以及仅支持IUnknown和专用接口的组件。没有严格要求组件的所有信息都应该在类型库中定义。对于那些试图集成组件并为COM提供布局和其他信息的人来说,类型库只是让事情变得更容易

还请注意,有时脚本兼容组件(IDispatch、IDispatchEx)只支持运行时信息,因此这些组件通常附带基本类型库,或者根本不支持。但是,对于公开这些接口的组件,您可以通过这些接口查询它们以获取信息


最后,OleView使用ITypeLib/ITypeInfo检查类型信息。并非所有COM库都会提供一个实现,有些库可能会选择将信息存储在单独的位置。

除了oleview之外,还有其他工具可以告诉dll公开的接口吗?