背景:
我有一个现有的代码,它使用Microsoft提供的功能,通过HTTP发布XML数据。具体来说,来自msxml4.dll (COM)的IServerXMLHTTPRequest (包括在MSXML3和up中)。我将迁移到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中,我可以使用msxml6.dll ( ServerXMLHTTP40、FreeThreadedDOMDocument40、XMLSchemaCache40等)来使用msxml6.dll(而不是将代码更改为ServerXMLHTTP60)。
现在,在一个新的Windows 7最终安装中搜索注册表,我找不到上面的uuid。因此,此代码在此计算机上失败:
hr = spIXMLHTTPRequest.CreateInstance(__uuidof(ServerXMLHTTP40));问题:
如果msxml6公开了ServerXMLHTTP40,为什么我在注册表中找不到它?安装ServerXMLHTTP40 (未安装msxml4)时,是否可以使用msxml4?
需要更多的信息吗?告诉我就行了。谢谢!
发布于 2014-11-22 09:13:05
.TLH文件(作为从.TLB导入的产品,这反过来又是.IDL文件的编译版本)是对接口、结构、方法等的描述,这些接口、结构和方法用于通过COM与另一个对象对话。无法保证或保证实现这些接口的另一方已安装或以其他方式可用,甚至根本不存在。
是的,您的签名是为了您的方便而定义的。您可能需要安装实现该功能的运行时。MSXML 4可能需要单独安装,而不管您从哪里获得开发细节。
https://stackoverflow.com/questions/27072693
复制相似问题