我有一個現有的代碼,使用由微軟提供的功能,通過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