
[英]Is this .tlh file correct, and if not, then how do I generate the correct one?
[英]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(与DOMDocument40
, FreeThreadedDOMDocument40
, XMLSchemaCache40
相同)。
现在,在全新的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.