我有一个用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对它一无所知。一种解决方案就是摆脱命名空间。当我们真正保留命名空间时,有没有变体?