фона:Могу ли я использовать все функциональные возможности, которые я вижу в файле .TLH?
У меня есть существующий код, который использует функциональные возможности, предоставляемые Microsoft, чтобы получить возможность отправлять данные XML через HTTP. В частности, IServerXMLHTTPRequest
(входит в состав MSXML3 и выше) из msxml4.dll (COM). Я перехожу к 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
, XMLSchemaCache40
и т. Д.).
Теперь, находясь в реестре в новой установке Windows 7 Ultimate, я не могу найти uuid выше. В результате, этот код не будет работать на этой машине:
hr = spIXMLHTTPRequest.CreateInstance(__uuidof(ServerXMLHTTP40));
Вопросы:
Если MSXML6 разоблачает ServerXMLHTTP40, почему это я не могу найти его в реестре? Могу ли я использовать ServerXMLHTTP40
, когда установлен msxml6 (msxml4 не установлен)?
Нужна дополнительная информация? Просто дай мне знать. Спасибо!
Если вы хотите, чтобы программисты переходили к следующей версии вашего программного обеспечения, вы не делаете этого, заставляя их изменять * все *. Файлы .h не достаточно мелкозернистые, чтобы позволить им делать кусочки, поэтому они решили это, включив как старые, так и новые объявления. Вы можете сказать из файлов .h, что основные версии были 2.6, 3.0, 4.0 и 6.0 –