包含或转发在IDL for C ++中声明头结构

时间:2014-05-25 22:30:11

标签: c++ windows idl

我有一个包含以下结构的头文件(special.h):

typedef struct SPECIAL_STRUCT{
    UINT x;
    UINT y;
} SPECIAL_STRUCT;

我想在定义测试接口(test.idl)的IDL文件中将此结构作为函数的输入参数包含在内:

interface ITestInterface : IUnknown
{        
    void* GetData(
        SPECIAL_STRUCT Special,
        UINT Data);
};

正确的方法是什么?听起来我可以做以下其中一项:

  • 根据http://msdn.microsoft.com/en-us/library/windows/desktop/aa367049%28v=vs.85%29.aspx,我可以使用import指令包含头文件中定义的数据类型。"但是,这样做的语法是什么?我尝试过以下方法:

    import" special.h" //错误MIDL2025:语法错误:期望接口名称或DispatchInterfaceName或CoclassName或ModuleName或LibraryName或ContractName或类型规范附近" DEFINE_GUID"

  • 同样根据http://msdn.microsoft.com/en-us/library/windows/desktop/aa367049%28v=vs.85%29.aspx,我可以创建一个带有包含头文件的虚拟接口的帮助器IDL文件。"但是,我不想这样做,因为我只需要一个结构定义。

  • 我也尝试在IDL中转发结构,即

    typedef struct SPECIAL_STRUCT; //错误MIDL2312:非法语法,除非使用mktyplib兼容模式:SPECIAL_STRUCT

    struct SPECIAL_STRUCT; //错误MIDL2025:语法错误:期望SPECIAL_STRUCT附近的类型规范

我意识到这可能是一个新手IDL问题,但我肯定会反馈意见。谢谢!

0 个答案:

没有答案