在声明接口时在IDL文件中使用C ++命名空间

时间:2014-03-03 15:03:48

标签: c++ namespaces declaration idl

我有一个用C ++编写的库,我想在IDL文件中声明接口时使用它的结构。以下是样本:

service.idl

import "..//core//common_structures.h";
[
  object,
  uuid(13B01AEB-52EC-4546-BDE0-DE91B37337CE),
  dual,
  pointer_default(unique)
]
interface IDeviceManagement: IUnknown {
   HRESULT GetSerialByIndex  ([in] uint8_t id, [out] Serial *serial, [out, retval] VARIANT_BOOL *result);
};

串行结构在key_api名称空间下的导入标头中定义。构建所有内容之前一切正常,直到生成service_i.h并出现以下错误:

 error C2061: syntax error : identifier 'Serial'    ..\service\service_i.h

靠近这些生成的行:

IDeviceManagement : public IUnknown
{
public:        
    virtual HRESULT STDMETHODCALLTYPE GetSerialByIndex( 
        /* [in] */ uint8_t id,
        /* [out] */ Serial *serial,
        /* [retval][out] */ VARIANT_BOOL *result) = 0;
};

我认为这是因为Serial被包装在命名空间下,而service_i.h对它一无所知。一种解决方案就是摆脱命名空间。当我们真正保留命名空间时,有没有变体?

0 个答案:

没有答案