LoadTypeLibWithResolver 函数
加载类型库并使用提供的 ITypeLibResolver 接口解析任何内部引用的类型库。
HRESULT LoadTypeLibWithResolver(
[in] LPCOLESTR szFile,
[in] REGKIND regkind,
[in] ITypeLibResolver *pTlbResolver,
[out] ITypeLib **pptlib);
参数
szFile
[in] 该类型库的文件路径。regkind
[in] 一个控制类型库如何注册的 REGKIND Enumeration 枚举标志。 其可能值如下: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 接口实现。
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**TlbRef.h
**库:**TlbRef.lib
**.NET Framework 版本:**3.5、3.0、2.0