我在 Windows 上有几个共享库。以及在这些库中作为 COM 对象导出的类,现在我需要将这些库移植到 linux。
如何在 linux 上构建它们并优雅地修改代码?以下是头文件的一部分。
EXTERN_C const IID IID_IYZD_Cap;
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4DE71EE7-E235-4248-B5F0-F44000000064")
IYZD_Cap : public IUnknown
{
public:
virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetCap(
/* [in] */ BSTR bsSection,
/* [in] */ BSTR bsKeyword,
/* [out] */ IUnknown **ppEnumFields) = 0;
};
#else /* C 风格的接口 */
typedef struct IYZD_CapVtbl
{
BEGIN_INTERFACE
HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
IYZD_Cap * This,
/* [in] */ REFIID riid,
/* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
ULONG ( STDMETHODCALLTYPE *AddRef )(
IYZD_Cap * This);
ULONG ( STDMETHODCALLTYPE *Release )(
IYZD_Cap * This);
/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetCap )(
IYZD_Cap * This,
/* [in] */ BSTR bsSection,
/* [in] */ BSTR bsKeyword,
/* [out] */ IUnknown **ppEnumFields);
END_INTERFACE
} IYZD_CapVtbl;
interface IYZD_Cap
{
CONST_VTBL struct IYZD_CapVtbl *lpVtbl;
};
#ifdef COBJMACROS
#define IYZD_Cap_QueryInterface(这个,riid,ppvObject)
( ((This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define IYZD_Cap_AddRef(这个)
( ( (This)->lpVtbl -> AddRef(This) )
#define IYZD_Cap_Release(这个)
( (This)->lpVtbl -> Release(This) )
#define IYZD_Cap_GetCap(本、bsSection、bsKeyword、ppEnumFields)
( (This)->lpVtbl -> GetCap(This,bsSection,bsKeyword,ppEnumFields))
#endif /* COBJMACROS */
#endif /* C 风格接口 */ #endif /c++/