Ну, заранее ничего не зная об этом, я посмотрел интерфейс, который вы дали, IWinHttpRequest. Я пошел в реестр и искал его в HKCR \ Interface, нашел в реестре typelib для интерфейса. Типовая библиотека: HKEY_CLASSES_ROOT \ TypeLib \ {662901F C -6951-4854-9EB2-D9A2570F2B2E}. Из библиотеки типов посмотрел HKEY_CLASSES_ROOT \ TypeLib \ {662901F C -6951-4854-9EB2-D9A2570F2B2E} \ 5.1 \ 0 \ win32. Запись win32 показывает, где находится расположение typelib на диске:% SystemRoot% \ system32 \ winhttpcom.dll
Поскольку% SystemRoot% \ system32 напрямую всегда находится в пути, вы можете использовать typelib просто так this:
#import "winhttpcom.dll"
За кулисами компилятор Visual C ++ создаст файлы с именами winhttpcom.tlh и winhttpcom.tli. Вы можете игнорировать эти файлы. Компилятор просто автоматически включает и связывает эти файлы.
Он объявляет интеллектуальные указатели COM в файле .tlh:
_COM_SMARTPTR_TYPEDEF(IWinHttpRequest, __uuidof(IWinHttpRequest));
_COM_SMARTPTR_TYPEDEF(IWinHttpRequestEvents, __uuidof(IWinHttpRequestEvents));
Все это будет заключено в пространство имен C ++:
namespace WinHttp {
// definitions in here
}
Если вам не нужны пространства имен, вы можете сделать что-то вроде:
#import "winhttpcom.dll" no_namespace
Документация для #import находится по адресу https://docs.microsoft.com/en-us/cpp/preprocessor/hash-import-directive-cpp?view=vs-2019