MIDL2000
必须为抽象声明符指定 /c_ext
抽象声明符表示 RPC 的 Microsoft 扩展,并且未在 DCE RPC 中定义。 因此,如果文件包含抽象声明符,则无法使用 /osf 开关进行编译,这会强制实施严格的 DCE 兼容性。 MIDL 版本 3.0 及更高版本使用 /c_ext 开关作为默认值; /osf 开关关闭 /c_ext 开关。 有关抽象声明符的信息,请参阅 ACF 正文
MIDL2001
数据实例化是非法的;必须使用“extern”或“static”
IDL 文件中的声明和初始化与 DCE RPC 不兼容。 此功能是在 DCE 兼容性 ( /osf ) 模式下编译时不可用的 Microsoft 扩展。
MIDL2002
编译器堆栈溢出
编译器在处理 IDL 文件时耗尽了堆栈空间。 当编译器正在处理复杂声明或表达式时,可能会出现此问题。 若要解决此问题,请简化复杂的声明或表达式。
MIDL2003
定义
此错误消息可能出现在以下情况下:已重新定义类型;已重新定义过程原型;已存在同名的结构或联合的成员;原型中已存在同名参数。
MIDL2004
[auto_handle] 绑定将用于
未将句柄类型定义为默认句柄类型。 编译器假定自动句柄将用作指定过程的绑定句柄。
MIDL2005
内存不足
编译期间编译器内存不足。 减小 IDL 文件的大小或复杂性,或向进程分配更多内存。
MIDL2006
递归定义
已以递归方式定义结构或联合。 当缺少嵌套结构定义中的指针规范时,可能会出现此错误。
MIDL2007
导入被忽略;文件已导入
导入 IDL 文件是幂等操作。 包括它不止一次没有效果。 除了第一个导入操作,所有操作都将被忽略。
MIDL2008
稀疏枚举需要 /c_ext 或 /ms_ext
将值分配给枚举常量与 DCE RPC 不兼容。 如果要使用允许将值分配给枚举常量的 MIDL 的 Microsoft 扩展,则无法使用强制实施严格的 DCE 兼容性 的 /osf 开关进行编译。 MIDL 版本 3.0 及更高版本使用 /c_ext /ms_ext 开关作为默认值; /osf 开关关闭这些扩展开关。
MIDL2009
未定义符号
表达式中使用了未定义的符号。 使用未定义的枚举值时,可能会出现此错误。
MIDL2010
在 IDL 文件中未定义的 ACF 文件中使用的类型
正在使用未定义的类型。
MIDL2011
未解析的类型声明
在 IDL 文件中的其他位置未定义其他错误信息字段中报告的类型。
MIDL2012
使用宽字符常量需要 /ms_ext 或 /c_ext
宽字符常量是 DCE IDL 的 Microsoft 扩展。 若要使用数据类型 wchar_t ,不能使用 /osf 开关进行编译,这会替代 MIDL 编译器默认开关 /ms_ext /c_ext
MIDL2013
使用宽字符串需要 /ms_ext 或 /c_ext
宽字符字符串常量是 DCE IDL 的 Microsoft 扩展。 若要使用数据类型 wchar_t ,不能使用 /osf 开关进行编译,这会替代 MIDL 编译器默认开关 /ms_ext /c_ext
MIDL2014
类型wchar_t不一致的重新定义
类型wchar_t 已重新定义为与无符号短 DOS *不等效的类型。
MIDL2015
找不到 importlib
编译器找不到 [ importlib ] 指令指定的类型库。 检查以确保库的路径和名称正确。
MIDL2016
两个库块
即使同一源文件中具有不同名称) (两个库块都是非法的。 将所有元素合并到单个库块中。
MIDL2017
dispinterface 语句需要 IDispatch 的定义
当未导入文件 Stdole2.tlb 或 Oaidl.idl 时,通常会发生此错误。
MIDL2018
访问类型库时出错
编译器找不到指定的类型库。 检查以确保已正确指定路径。
MIDL2019
访问类型信息时出错
导入的类型库已损坏、无效或仅部分构造。
MIDL2020
生成类型库时出错
无法生成类型库。 此错误的一个可能原因是指定 IDL 文件的路径超过 126 个字符。 Oleaut32.dll不支持超过 126 个字符的路径名称。
MIDL2021
重复 ID
应用程序使用 IDL 文件中的 ID 语句为成员函数指定 DISPID。 成员函数可以是接口或非接口的属性或方法。 此错误指示 IDL 文件为两个方法或属性指定相同的标识符号。
MIDL2022
条目属性的非法或缺失值
条目属性的参数可以是指定命名入口点的字符串,也可以是定义入口点的序号。 此参数缺失或包含无效值。
MIDL2023
错误恢复假设
MIDL 编译器在 IDL 文件中发现了非法字符。
MIDL2024
错误恢复放弃
MIDL 编译器在 IDL 文件中发现了非法字符。 它将忽略非法字符。
MIDL2025
语法错误
编译器检测到指定行的语法错误。
MIDL2026
无法从以前的语法错误中恢复;中止编译
MIDL 编译器通过添加或删除语法元素自动尝试从语法错误中恢复。 此消息表明,尽管这些尝试恢复,编译器检测到错误过多。 更正指定的错误 () 和重新编译。
MIDL2027
未知杂注选项
MIDL 不支持指定的 C 杂注。 从 IDL 文件中删除杂注。
MIDL2028
未实现的功能
MIDL 功能虽然是语言定义的一部分,但在 Microsoft RPC 中未实现,但 MIDL 编译器不支持此功能。 例如,未实现以下语言功能:位集、管道和国际字符类型。 未实现的语言功能显示在错误消息的其他错误信息字段中。
MIDL2029
类型未实现
指定的数据类型虽然是合法的 MIDL 关键字,但在 Microsoft RPC 中未实现。
MIDL2030
取消引用操作中使用的非指针
不是指针的数据类型已与指针操作相关联。 不能通过指定的非指针访问对象。
MIDL2031
表达式的除数为零
常量表达式包含除以零。
MIDL2032
表达式使用不兼容类型
表达式中运算符的左侧和右侧的类型不兼容。
MIDL2033
nonarray 表达式使用索引运算符
该表达式对不是数组类型的数据项使用数组索引操作。
MIDL2034
表达式左侧不计算为结构/union/枚举
直接或间接引用运算符“.”或“->”已应用于不是结构、联合或枚举的数据对象。 不能使用指定的对象获取直接或间接引用。
MIDL2035
应有常量表达式
语法中预期有一个常量表达式。 例如,数组边界需要常量表达式。 编译器在使用变量或未定义的符号定义数组绑定时发出此错误消息。
MIDL2036
不能在编译时计算表达式
编译器无法在编译时计算表达式。
MIDL2037
表达式未实现
MICROSOFT RPC 提供的编译器版本不支持在早期版本的 MIDL 编译器中支持的功能。 删除指定的表达式。
MIDL2038
未指定 [pointer_default] 属性,假定所有未指定指针的 [唯一]
MIDL 编译器为没有指针属性的指针提供了三种不同的默认情况。 顶级指针的函数参数默认为 [ ref ] 指针。 结构中嵌入的指针和指向其他指针的指针 (不是顶级指针) 默认为 [ pointer_default ] 属性指定的类型。 如果未提供 [ pointer_default ] 属性,则这些非顶级指针默认为唯一指针。 此错误消息指示最后一种情况:未提供 [ pointer_default ] 属性,并且至少有一个非顶级指针将被视为唯一指针。 有关详细信息,请参阅 默认指针类型
MIDL2039
接口不自动化封送符合性
该接口不符合 OLE 自动化接口的要求。 检查以确保接口派生自 IUnknown IDispatch
MIDL2040
[out] 仅参数不能是指向开放结构的指针
[ out ]-only 参数已用作指向结构(称为开放结构)的指针,其传输范围和大小在运行时确定。 服务器存根不知道为开放结构分配多少空间。 使用指向打开结构的指针的指针,并确保服务器应用程序为其分配足够的空间。
MIDL2041
[out] 仅参数不能是未化的字符串
具有字符串属性的数组已声明为 [ out ]-only 参数,不包含任何大小规范。 服务器存根需要大小信息来为字符串分配内存。 可以删除字符串属性并添加 [ size_is ] 属性,也可以将参数更改为 [ in, out ] 参数。
MIDL2042
[out] 参数不是指针
所有 [ out ] 参数都必须是指针,以符合 C 编程语言的逐值约定。 [ out ] 方向参数指示服务器将值传输到客户端。 使用按值调用约定,服务器仅当函数参数是指针时,才能将数据传输到客户端。
MIDL2043
open 结构不能是参数
开放结构包含一个符合性数组作为最后一个元素。 当该结构或联合的最后一个元素是一个符合性数组时,将截断结构或联合。
MIDL2044
[out] 上下文句柄/泛型句柄必须指定为指向该句柄类型的指针
具有 [ out ] 方向属性的上下文句柄或用户定义的句柄参数必须是指向指针的指针。
MIDL2045
上下文句柄不得派生自具有 [transmit_as] 属性的类型
上下文句柄必须作为上下文句柄类型传输。 它们不能作为其他类型的传输,也不能从 [transmit_is]、[ represent_as ]、[ wire_marshal ] 或 [ user_marshal ] 派生。
MIDL2046
无法为远程过程指定可变数量的参数
在编译时指定可变数量的参数的远程过程调用与 DCE RPC 定义不兼容。 不能在 Microsoft RPC 中使用可变数量的参数。
MIDL2047
named 参数不能为“void”
使用名称指定具有基类型 void 的参数。
MIDL2048
参数派生自“coclass”或“module”
coclass 指定包含接口和 dispinterface 的顶级对象。 它不能作为参数传递。
MIDL2049
只有第一个参数可以是绑定句柄;必须指定 /ms_ext 开关
DCE RPC 仅允许第一个参数是绑定句柄。 使用 /osf 开关进行编译会关闭默认 /ms_ext 开关,该开关支持多个句柄参数,并在最左侧的位置处理参数。
MIDL2050
不能对参数和返回类型使用 [comm_status]
过程及其其中一个参数都具有 [ comm_status ] 属性。 [ comm_status ] 属性指定一次只能有一个数据对象的类型 error_status_t
MIDL2051
[local] 过程属性需要 /ms_ext
[ local ] 属性是 DCE IDL 的 Microsoft 扩展。 若要在函数上使用此属性,不能使用 /osf 开关进行编译。 /osf 开关替代 MIDL 编译器默认开关 /ms_ext /c_ext
MIDL2052
属性属性只能与过程一起使用
[propget]、[ propput ]或 [ propputref ] 属性 的不当使用。 检查以确保已正确拼写属性的函数名称,并且该属性和函数具有相同的名称。
MIDL2053
过程可能没有多个属性属性
最多只能为函数指定 [propget]、[ propput ] 或 [ propputref ] 属性之一。
MIDL2054
该过程具有操作属性的非法组合
某些属性不能与其他属性相关联。 检查 MIDL 语言参考,了解此过程中使用的属性的确切要求和语法。
MIDL2055
从符合性数组派生的字段必须是结构的最后一个成员
该结构包含一个符合性数组,该数组不是结构中的最后一个元素。 一致性数组必须显示为最后一个结构元素。
MIDL2056
重复 [case] 标签
已指定重复大小写标签。 将显示重复标签。
MIDL2057
没有为歧视联合指定的 [default] 事例
没有默认案例,就指定了一个歧视的联合。
MIDL2058
无法解析属性表达式
无法解析与属性关联的表达式。 如果未定义表达式中显示的变量,通常会发生此错误。 例如,当变量 定义且由属性 [ size_is ] 使用时,可能会出现错误。
MIDL2059
特性表达式必须为整型,不支持 64 位表达式
指定的属性变量或表达式必须是整型类型。 当属性表达式类型不解析为整数时,会发生此错误。
MIDL2060
[byte_count] 需要 /ms_ext
[ byte_count ] 属性是 DCE IDL 的 Microsoft 扩展。 若要使用此属性,不能使用 /osf 开关进行编译,这会替代 MIDL 编译器默认开关 /ms_ext /c_ext
MIDL2061
[byte_count] 只能应用于指针类型的输出参数
[ byte_count ] 属性只能应用于 [ out ] 参数,所有 [ out ] 参数都必须是指针类型。
MIDL2062
[byte_count] 不能在指向符合性数组或结构的指针上指定
[ byte_count ] 属性不能应用于符合性数组或结构。
MIDL2063
仅指定字节计数的参数不是 [in],字节计数参数不是 [out]
与 [ byte_count ] 关联的值必须从客户端传输到服务器;它必须是 [ in ] 参数。 [ byte_count ] 参数不需要是 [ in, out ] 参数。
MIDL2064
指定字节计数的参数不是整型类型
与字节计数关联的值必须是整数类型 int small short long
MIDL2065
[byte_count] 不能在具有 size 属性的参数上指定
[ byte_count ] 属性不能用于其他大小属性,如 [ size_is ] 或 [ length_is ]。
MIDL2066
[case] 表达式不是常量
为事例标签指定的表达式不是常量。
MIDL2067
[case] 表达式不是整型
为事例标签指定的表达式不是整数类型。
MIDL2068
在 void * 以外的类型上指定 [context_handle] 需要 /ms_ext
对于 DCE-RPC 兼容性,上下文句柄必须是 void 类型的指针 * 。 如果希望上下文句柄与 void 以外的 类型相关联,请不要使用 MIDL 编译器开关 /osf ,这会替代 MIDL 编译器默认开关 /ms_ext
MIDL2069
不能使用每个comm_status/fault_status指定多个参数
过程只能有一个具有 [ comm_status ] 属性的参数。 它最多可以有一个具有 [ fault_status ] 属性的参数。
MIDL2070
comm_status/fault_status 参数必须是 [out] 唯一的指针参数
错误代码类型 [ comm_status ] 和 [ fault_status ] 从服务器传输到客户端,因此必须指定为 [ out ] 参数。 由于 C 编程语言中的约束,所有 [ out ] 参数都必须是指针。
MIDL2071
终结点语法错误
终结点语法不正确。
MIDL2072
inapplicable 属性
不能在此构造中应用指定的属性。 例如,字符串属性适用于 字符 数组或 字符 指针,不能应用于包含两个 整数的结构:
typedef [string] struct moo 
    short x;
    short y;
MIDL2073
[allocate] 需要 /ms_ext
分配属性表示未定义为 DCE RPC 的一部分的 Microsoft 扩展。 若要使用此属性,不能使用 /osf 开关进行编译,这会替代 MIDL 编译器默认开关 /ms_ext
MIDL2074
无效 [分配] 模式
指定了 [allocate] 属性构造的无效模式。 这四种有效模式是single_node、all_nodes、on_null,并且始终有效。
MIDL2075
不能使用字符串属性应用 length 属性
使用字符串属性时,生成的存根文件调用 strlen 函数以确定字符串长度。 不要对同一变量使用 length 属性和字符串属性。
MIDL2076
[last_is] 和 [length_is] 不能同时指定
[last_is] 和 [length_is] 都已为同一数组指定。 这些属性相关如下:length = last first + 1。 由于每个值都可以从另一个值派生,因此不要同时指定这两个值。
MIDL2077
[max_is] 和 [size_is] 不能同时指定
[ max_is] 和 [ size_is] 都已为同一数组指定。 这些属性相关,如下所示:max = size + 1。 由于每个值都可以从另一个值派生,因此不要同时指定这两个值。
MIDL2078
未使用联合时指定的 [switch_is] 属性
没有为工会指定任何歧视者。 [switch_is] 属性指示用于在联合字段中选择的歧视者。
MIDL2079
未指定 [uuid]
尚未为接口指定 UUID。
MIDL2080
[uuid] 在 [local] 接口上忽略
在对象接口上使用 [local] 属性会导致 MIDL 编译器忽略 [uuid] 属性。 不能在 RPC 接口上使用这两个属性。
MIDL2081
长度和大小属性表达式之间的类型不匹配
长度和大小属性表达式的类型必须相同。 例如,当 [size_is] 表达式的属性变量的类型 为无符号 long 且 [length_is] 表达式的属性变量的类型 为 long 时,将发出此警告。
MIDL2082
[string] 属性必须指定为“byte”、“char”或“wchar_t”数组或指针
字符串属性不能应用于基类型不是 字节字符结构 (成员都是 字节字符 类型)的指针或数组。
MIDL2083
[switch_is] 表达式的类型与联合的开关类型不匹配
如果未指定联合 [switch_type] ,则开关类型与 [switch_is] 字段的类型相同。
MIDL2084
[transmit_as] 不得应用于派生自上下文句柄的类型
无法将上下文句柄作为其他类型的传输。
MIDL2085
[transmit_as] 必须指定可允许的类型
指定的 [transmit_as] 类型派生自 Microsoft RPC 无法传输的类型,例如 voidvoid *int。使用定义的 RPC 基类型;对于 int,请添加 大小说明符(如小、 )以限定 int
MIDL2086
[transmit_as] 和 [represent_as] 的传输类型不得为指针或派生自指针
传输的类型不能是指针,也不能派生自指针。
MIDL2087
为 [transmit_as] 和 [represent_as] 呈现的类型不得派生自一致性/不同数组、其指针等效或一致/不同结构
应用 [transmit_as] 的类型不能从一致性数组或结构派生, (在运行时确定其大小) 的数组或结构。
MIDL2088
[uuid] 格式不正确
UUID 格式不符合规范。 UUID 必须是一个字符串,其中包含长度为 8、4、4、4、4 和 12 位的五个十六进制数字序列。 “12345678-1234-ABCD-EF01-28A49C28F17D”是有效的 UUID。 使用函数 UuidCreate 或实用工具生成有效的 UUID。
MIDL2089
uuid 不是十六进制数
为接口指定的 UUID 包含十六进制数字表示形式中无效的字符。 字符 0 到 9 和 A 到 F 在十六进制表示形式中有效。
MIDL2090
可选参数必须在所需参数之后出现
有关参数列表排序的说明,请参阅 MIDL 语言参考中的 [可选] 。
MIDL2091
使用 [entry] 时需要 [dllname]
如果要在 DLL 中指定入口点,则还必须使用 [dllname] 属性指定该 DLL 的名称。
MIDL2092
[bindable] 无效,没有 [propget]、[propput]或 [propputref]
[bindable] 属性仅在属性上有效,因此还必须指定属性访问或属性设置函数之一。
MIDL2093
具有 [propput] 或 [propputref] 的过程必须至少有一个参数
[propput] 或 [ propputref] 过程必须至少有一个具有要设置的属性的 [in] 参数; [propget] 过程必须至少有一个 [outretval] 参数才能接收属性或引用。
MIDL2094
[id] 属性是必需的
此成员函数,由于使用了 dispinterface 语法,因此需要使用 [ id] 属性指定 DISPID。 使用属性和方法指定 dispinterface 时,必须为每个属性和方法指定 DISPID。
MIDL2095
ACF 中指定的接口名称与 IDL 文件中指定的接口名称不匹配
在当前编译器模式下,ACF 中接口关键字后面的名称必须与 IDL 文件中接口关键字后面的名称相同。 使用 MIDL 编译器开关 /acf 进行编译时,IDL 和 ACF 文件中的接口名称可能有所不同。
MIDL2096
重复属性
已指定重复属性或冲突属性。 当两个属性互斥时,通常会发生此错误。 例如,属性 [code] 和 [nocode] 不能同时使用。
MIDL2097
具有 [comm_status] 或 [fault_status] 属性的参数必须是指向类型error_status_t的指针
当 [fault_status] 或 [comm_status] 用作参数属性时,参数必须是类型为 error_status_t 的 [out] 参数。 如果发生服务器错误,参数将设置为错误代码。 成功完成远程调用后,该过程将设置值。
MIDL2098
无法在 ACF 文件中指定 [local] 过程
ACF 中指定了本地过程。 只能在 IDL 文件中指定本地过程。
MIDL2099
指定类型未定义为句柄
[implicit_handle] 属性中指定的类型未定义为句柄类型。 更改属性指定的类型定义或类型名称。
MIDL2100
过程未定义
属性已应用于 ACF 中的过程,并且该过程未在 IDL 文件中定义。
MIDL2101
IDL 文件中不存在此参数
在 IDL 文件中的定义中不存在 ACF 中指定的参数。 ACF 中显示的所有参数、函数和类型定义都必须对应于 IDL 文件中以前定义的参数、函数和类型。
MIDL2102
此数组边界构造不受支持
MIDL 当前支持以 Array[Lower .. 格式表示数组的上限和下限。 仅当指定数组下限的常量解析为值零时。
MIDL2103
数组绑定规范是非法的
固定大小数组的数组边界的用户规范是非法的。 例如:
typedef short Array[-1]
MIDL2104
不支持指向符合性数组或包含符合性数组的数组的指针
非法符合数组用法。 有关控制符合性数组的规则,请参阅 数组和 RPC
MIDL2105
pointee/array 不派生任何大小
未指定任何大小规范的符合性数组。 可以使用 [max_is] 或 [size_is] 属性指定大小。
MIDL2106
只有固定数组和 SAFEARRAY 在类型库中是合法的
已在不能在类型库中使用的库语句中使用了数组类型。
MIDL2107
SAFEARRAY 仅在库块内合法
MIDL 编译器不会将 SAFEARRAY 识别为有效的数据类型,除非生成类型库。
MIDL2108
格式错误的字符常量
字符常量中不允许使用行尾字符。
MIDL2109
注释中找到的文件结尾
注释中遇到了文件结尾字符。
MIDL2110
字符串中找到的文件结尾
字符串中遇到了文件结尾字符。
MIDL2111
标识符长度超过 31 个字符
标识符限制为 31 个字母数字字符。 长度超过 31 个字符的标识符名称将被截断。
MIDL2112
字符串中找到的行尾
字符串中已遇到行尾字符。 验证是否已包含终止字符串的双引号字符。
MIDL2113
字符串常量超过 255 个字符的限制
字符串超过了允许的最大长度为 255 个字符。
MIDL2114
标识符超过 255 个字符的限制,已被截断
标识符超过了允许的最大长度为 255 个字符。 标识符中的过多字符将被截断。
MIDL2115
常量太大
常量太大,不能在内部表示。
MIDL2116
数值分析错误
编译器无法分析数字标识符。
MIDL2117
打开文件时出错
操作系统在尝试打开输出文件时报告了错误。 此错误可能是由于文件系统太长的名称或文件名重复导致的。
MIDL2118
绑定到函数的错误
MIDL2119
初始化 OLE 时出错
MIDL2120
加载库时出错