LoadTypeLibWithResolver 函数

加载类型库,并使用所提供的 ITypeLibResolver 接口解析任何内部引用的类型库。

语法

HRESULT LoadTypeLibWithResolver(  
    [in]  LPCOLESTR           szFile,  
    [in]  REGKIND             regkind,  
    [in]  ITypeLibResolver   *pTlbResolver,  
    [out] ITypeLib          **pptlib);  

参数

szFile
[in] 类型库的文件路径。

regkind
[in] 用于控制类型库注册方式的 REGKIND 枚举标志。 可能的值为:

  • REGKIND_DEFAULT:使用默认注册行为。

  • REGKIND_REGISTER:注册此类型库。

  • REGKIND_NONE:不要注册此类型库。

pTlbResolver
[in] 指向 ITypeLibResolver 接口的实现的指针。

pptlib
[out] 对正在加载的类型库的引用。

返回值

下表中列出的 HRESULT 值之一。

返回值 含义
S_OK 成功。
E_OUTOFMEMORY 内存不足。
E_POINTER 一个或多个指针无效。
E_INVALIDARG 一个或多个参数无效。
TYPE_E_IOERROR 函数无法写入文件。
TYPE_E_REGISTRYACCESS 无法打开系统注册数据库。
TYPE_E_INVALIDSTATE 无法打开类型库。
TYPE_E_CANTLOADLIBRARY 无法加载类型库或 DLL。

注解

Tlbexp.exe(类型库导出程序)在程序集到类型库转换过程中调用 LoadTypeLibWithResolver 函数。

此函数以对注册表的最小访问权限加载指定的类型库。 然后,该函数检查该类型库中是否有内部引用的类型库,其中每个库都必须加载并添加到父类型库中。

在加载引用的类型库之前,其引用文件路径必须解析为完整的文件路径。 这通过 ITypeLibResolver 接口提供的 ResolveTypeLib 方法来完成,该接口在 pTlbResolver 参数中传递。

当引用的类型库的完整文件路径已知时,LoadTypeLibWithResolver 函数将加载引用的类型库并将其添加到父类型库,从而创建组合的主类型库。

在该函数解析并加载所有内部引用的类型库后,它会在 pptlib 参数中返回对主解析类型库的引用。

LoadTypeLibWithResolver 函数通常由 Tlbexp.exe(类型库导出程序)调用,该导出程序在 pTlbResolver 参数中提供自己的内部 ITypeLibResolver 接口实现。

如果直接调用 LoadTypeLibWithResolver,则必须提供自己的 ITypeLibResolver 接口实现。

要求

平台:请参阅系统要求

头文件:TlbRef.h

库:TlbRef.lib

.NET Framework 版本:3.5、3.0、2.0

另请参阅