我有一个现有的代码,使用由微软提供的功能,通过HTTP发布XML数据。具体来说,msxml4.dll(COM)中的IServerXMLHTTPRequest
(包含在MSXML3及更高版本中)。我正在转移到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(DOMDocument40
,FreeThreadedDOMDocument40
,等)相同。
现在,在新的Windows 7旗舰版安装中搜索注册表,我无法找到上面的uuid。其结果是,该代码失败,这台机器上:
hr = spIXMLHTTPRequest.CreateInstance(__uuidof(ServerXMLHTTP40));
问题:
如果MSXML6被暴露ServerXMLHTTP40,那为什么我不能在注册表中找到了吗?安装msxml6时是否可以使用ServerXMLHTTP40
(msxml4未安装)?
需要附加信息?请让我知道。谢谢!
如果您希望程序员转移到您的软件的下一个版本,那么您不要通过强制他们更改* everything *来完成此操作。 .h文件不够细致,不足以让它们进行分片处理,因此他们通过包含旧的和新的声明来解决它。你可以从.h文件中得知主要版本是2.6,3.0,4.0和6.0 – 2014-11-22 10:08:17