gpt4 book ai didi

c++ - 我可以使用 .TLH 文件公开的所有功能吗?

转载 作者:行者123 更新时间:2023-11-28 02:37:13 25 4
gpt4 key购买 nike

背景:

我有一个现有代码使用 Microsoft 提供的功能通过 HTTP 发布 XML 数据。具体来说,IServerXMLHTTPRequest(包含在 MSXML3 及更高版本中)来自 msxml4.dll (COM)。我将移动到 msxml6.dll,因为不再支持 msxml4.dll(已被 MSXML6 取代)。 More information about MSXML versions .

代码:

#import "msxml6.dll"
using namespace MSXML2;

IServerXMLHTTPRequestPtr spIXMLHTTPRequest = NULL;
hr = spIXMLHTTPRequest.CreateInstance(__uuidof(ServerXMLHTTP40));

问题:

当使用 msxml4.dll 和 msxml6.dll 构建我的应用程序时,以下内容分别包含在 msxml4.tlh 和 msxml6.tlh 中:

struct __declspec(uuid("88d969c6-f192-11d4-a65f-0040963251e5"))
ServerXMLHTTP40;
// [ default ] interface IServerXMLHTTPRequest2

据我所知,查看 msxml6.tlh,我可以使用 ServerXMLHTTP40(而不是将代码更改为 ServerXMLHTTP60)和 msxml6.dll(与 相同) DOMDocument40FreeThreadedDOMDocument40XMLSchemaCache40 等)。

现在,在全新的 Windows 7 旗舰版安装中搜索注册表,我找不到上面的 uuid。结果,这段代码在这台机器上失败了:

hr = spIXMLHTTPRequest.CreateInstance(__uuidof(ServerXMLHTTP40));

问题:

如果 msxml6 公开了 ServerXMLHTTP40,为什么我在注册表中找不到它?我可以在安装了 msxml6(未安装 msxml4)的情况下使用 ServerXMLHTTP40 吗?

需要更多信息?请告诉我。谢谢!

最佳答案

.TLH 文件(作为从 .TLB 导入的产物,后者又是 .IDL 文件的编译版本)是接口(interface)、结构、方法等的描述,用于通过 COM 与另一个对象通信。不保证或 promise 实现这些接口(interface)的另一方已安装或以其他方式可用,甚至根本不存在。

是的,您已经为方便起见定义了签名。您可能需要安装实现该功能的运行时。无论您从何处获得开发详细信息,MSXML 4 都可能需要单独安装。

关于c++ - 我可以使用 .TLH 文件公开的所有功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27072693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com