Пожалуйста, посмотрите этот минимальный пример определения моего интерфейса.
.idl-файл:
#pragma once
import "oaidl.idl";
#define RC_INVOKED 1
#include <CertSrv.h>
[
object,
uuid(A9A5951C-B9C3-45DA-94AA-7959959AA5C3),
helpstring("My minimal example Interface"),
local
]
interface IMinimalExample : IUnknown
{
HRESULT Initialize();
};
Не компилируется, если включен CertSrv.h
. Как только я удаляю include, он прекрасно компилируется.
Я использую midl.exe из Windows 10 SDK (10.0.18362). В проекте используется последний найденный Windows 10 SDK и набор инструментов платформы v142. Я также подтвердил, что на самом деле используется последняя версия midl.exe.
Ошибки компилятора:
Синтаксическая ошибка MIDL2025: ожидание объявления или * рядом с "handle_t" C: \ Program Files (x86) \ Windows Kits \ 10 \ Include \ 10.0.18362.0 \ shared \ rpcdce.h 74
Синтаксическая ошибка MIDL2025: ожидается; или рядом с «handle_t» C: \ Program Files (x86) \ Windows Kits \ 10 \ Include \ 10.0.18362.0 \ shared \ rpcdce.h 74
Синтаксическая ошибка MIDL2025: ожидается спецификация типа рядом с "LPOVERLAPPED" C: \ Program Files (x86) \ Windows Kits \ 10 \ Include \ 10.0.18362.0 \ shared \ rpcasyn c .h 121
Я добавил #define RC_INVOKED 1
в избавиться от других связанных с этим ошибок (связанных с INT, _LARGE_INTEGER и другими в winnt.h).
Кто-нибудь сталкивался с этим раньше и может указать мне правильное направление?