Фон:
У меня есть существующий код, который использует функциональные возможности, предоставленные Microsoft, для публикации данных XML через HTTP. В частности, IServerXMLHTTPRequest
(входит в MSXML3 и выше) из msxml4.dll (COM). Я перехожу к 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, почему я не могу найти его в реестре? Могу ли я использовать ServerXMLHTTP40
когда msxml6 установлен (msxml4 не установлен)?
Нужна дополнительная информация? Просто дай мне знать. Спасибо!
.Файл TLH (как продукт импорта из .TLB, который, в свою очередь, является скомпилированной версией файла .IDL), представляет собой описание интерфейсов, структур, методов и т. Д., Которые используются для связи через COM с другим объектом. Нет никаких гарантий или обещаний, что другая сторона, реализующая эти интерфейсы, установлена или иным образом доступна, или вообще существует.
Да, у вас есть подписи, определенные для вашего удобства. Возможно, вам придется установить среду выполнения, которая реализует эту функциональность. MSXML 4 может потребоваться отдельная установка независимо от того, откуда вы получили подробности разработки.