2014-11-22 3 views
0

фона:Могу ли я использовать все функциональные возможности, которые я вижу в файле .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 не установлен)?

Нужна дополнительная информация? Просто дай мне знать. Спасибо!

+1

Если вы хотите, чтобы программисты переходили к следующей версии вашего программного обеспечения, вы не делаете этого, заставляя их изменять * все *. Файлы .h не достаточно мелкозернистые, чтобы позволить им делать кусочки, поэтому они решили это, включив как старые, так и новые объявления. Вы можете сказать из файлов .h, что основные версии были 2.6, 3.0, 4.0 и 6.0 –

ответ

2

.TLH-файл (как продукт импорта из .TLB, который в свою очередь является скомпилированной версией файла .IDL) представляет собой описание интерфейсов, структур, методов и т. Д., Которые используются для разговора через COM к другому объекту , Нет гарантии или обещания, что другая сторона, реализующая эти интерфейсы, установлена ​​или доступна другим образом или вообще существует.

Да, у вас есть подписи, определенные для удобства. Возможно, вам потребуется установить среду выполнения, которая реализует функциональные возможности. MSXML 4 может потребоваться отдельная установка независимо от того, откуда вы получили детали разработки.

+0

«Да, у вас есть подписи, определенные для удобства» - смущает удобство LOL –

 Смежные вопросы

  • Нет связанных вопросов^_^