我有一个包含以下结构的头文件(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问题,但我肯定会反馈意见。谢谢!