C++ 当包含CertSrv.h时,是什么导致MIDL22025错误?

C++ 当包含CertSrv.h时,是什么导致MIDL22025错误?,c++,com,idl,midl,C++,Com,Idl,Midl,请参阅我的接口定义的这个最小示例 .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 IMinimal

请参阅我的接口定义的这个最小示例

.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();
};
#pragma一次
导入“oaidl.idl”;
#定义RC_调用1
#包括
[
对象
uuid(A9A5951C-B9C3-45DA-94AA-7959959AA5C3),
helpstring(“我的最小示例接口”),
地方的
]
接口IMinimalExample:IUnknown
{
HRESULT初始化();
};
只要包含
CertSrv.h
,就不会编译此文件。我一删除include,它就可以编译了

我正在使用Windows 10 SDK(10.0.18362)中的midl.exe。该项目设置为使用最新发现的Windows 10 SDK和平台工具集v142。我还确认,实际上使用了最新版本的midl.exe

编译器错误:

MIDL22025语法错误:应为声明符或*靠近“handle\u t” C:\ProgramFiles(x86)\Windows 工具包\10\Include\10.0.18362.0\shared\rpcdce.h 74

MIDL205语法错误:应为;或者,靠近“handle\t”C:\Program 文件(x86)\Windows工具包\10\Include\10.0.18362.0\shared\rpcdce.h 74

MIDL22025语法错误:应在 “LPOVERLAPPED”C:\Program Files(x86)\Windows 工具包\10\Include\10.0.18362.0\shared\rpcasync.h 121

我添加了
#define RC_INVOKED 1
,以消除其他相关错误(与INT、_LARGE_INTEGER和winnt.h中的其他错误相关)


以前有没有人遇到过这种情况,可以给我指出正确的方向?

嗯,
CertSrv.h
是C语言,IDL不是C语言;您不能在IDL文件中包含任意头并期望它能够编译。为什么您觉得需要包括
CertSrv.h
?您试图解决的最终问题是什么?编写NDES策略模块(分发证书)。包含
CertSrv.h
如何帮助实现这一崇高目标?您可能需要导入
certpol.idl
那么,
CertSrv.h
是C语言,而idl不是C语言;您不能在IDL文件中包含任意头并期望它能够编译。为什么您觉得需要包括
CertSrv.h
?您试图解决的最终问题是什么?编写NDES策略模块(分发证书)。包含
CertSrv.h
如何帮助实现这一崇高目标?您可能需要导入
certpol.idl