Что вызывает ошибку MIDL2025 при включении CertSrv.h? - PullRequest
1 голос
/ 20 февраля 2020

Пожалуйста, посмотрите этот минимальный пример определения моего интерфейса.

.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).

Кто-нибудь сталкивался с этим раньше и может указать мне правильное направление?

...