Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HRESULT如何显示在MIDL文件中?_C#_C++_Com_Interop - Fatal编程技术网

C# HRESULT如何显示在MIDL文件中?

C# HRESULT如何显示在MIDL文件中?,c#,c++,com,interop,C#,C++,Com,Interop,我正在用IDL文件开发一些COM接口。一些接口方法返回HRESULT,但我已经检查了,没有HRESULT的线索。那么我在哪里可以找到这种数据类型的官方定义呢 更新 多亏了Shog9,我在wtypes.idl中找到了它。我将其粘贴到此处以供他人查看: ... cpp_quote("#ifndef _HRESULT_DEFINED") cpp_quote("#define _HRESULT_DEFINED") #if defined(_STRICT_HRESULT)

我正在用IDL文件开发一些COM接口。一些接口方法返回HRESULT,但我已经检查了,没有HRESULT的线索。那么我在哪里可以找到这种数据类型的官方定义呢

更新 多亏了Shog9,我在wtypes.idl中找到了它。我将其粘贴到此处以供他人查看:

    ...
    cpp_quote("#ifndef _HRESULT_DEFINED")
    cpp_quote("#define _HRESULT_DEFINED")
    #if defined(_STRICT_HRESULT)
    typedef struct _HRESULT_STRUCT {
            DWORD Data1;
    } HRESULT_STRUCT, *PHRESULT_STRUCT;
    typedef PHRESULT_STRUCT HRESULT;
    #else // defined(_STRICT_HRESULT)
    cpp_quote("#ifdef __midl")
    typedef LONG HRESULT;
    ...
但是,当我在IDL文件中显式使用DWORD或LONG时,MIDL编译器将报告一个错误,说明:

"error MIDL2269: procedures in an object interface must return an HRESULT" 

有点可笑…

任何实用的.idl文件都应该以

import "oaidl.idl";
import "ocidl.idl";

它声明了基本类型。如HRESULT和变体。等等。

它实际上只是
DWORD
的别名(这是无符号long的别名)。它是由标准导入机制引入的wtypes.idl中为MIDL定义的


HRESULT
的目的是以一致可识别的方式表示返回代码-无论值中编码的来源或其他信息如何,都可以识别成功和失败,并且某些系统定义的值在与标准接口结合时具有特殊意义。有关详细信息。

我已检查了这两个文件。找不到HRESULT的定义。我遗漏了什么吗?你可能遗漏了那些文件中的所有include指令。你真的有问题吗?