繁体   English   中英

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

[英]Can I use all the functionally I see exposed by the .TLH file?

背景:

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

码:

#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 Ultimate安装中搜索注册表,找不到上面的uuid。 结果,此代码在此计算机上失败:

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

问题:

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

需要其他信息吗? 请让我知道。 谢谢!

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM