From 3cdbaeb38a3964b9fc891dabf5c30339f1b5942a Mon Sep 17 00:00:00 2001 From: m0_56903617 Date: Thu, 8 Jul 2021 10:54:01 +0800 Subject: [PATCH] =?UTF-8?q?202107081052=20=E4=BF=AE=E6=94=B9object.h?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=94=A8c++=E5=AE=9E=E7=8E=B0LCOM=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/object.h | 13 ++++++++++--- src/dlist.c | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/include/object.h b/include/object.h index b2fc93c..0978486 100644 --- a/include/object.h +++ b/include/object.h @@ -30,7 +30,8 @@ /* * 修改记录: - 202105140816: 根据git的要求增加License + 202105140816:rxh 根据git的要求增加License + 202107081052:rxh 修改object.h支持用c++实现LCOM对象 */ @@ -221,7 +222,7 @@ typedef struct _sObjectHeader { && isGUIDEqual(((sObjectHeader *)(objectThis(object)))->__object_clsid, classid) ) #define objectQueryInterface(object, iid, pInterface) \ (objectPtrValid(object)? \ - (*(IObject **)(object))->QueryInterface((HOBJECT)(object), (iid), pInterface): \ + (*(IObject **)(object))->QueryInterface((HOBJECT)(object), (iid), (const void **)(pInterface)): \ EIID_INVALIDOBJECT) #define objectAddRef(object) (objectPtrValid(object)? \ (*(IObject **)(object))->AddRef((HOBJECT)(object)): \ @@ -353,6 +354,12 @@ int str2iid(const char* str, IIDTYPE iid); #define INTERFACE_INIT(__interface, objptr, _obj, interfacename) \ objptr->INTERFACE_VAR(__interface) = &_obj##_##interfacename##_interface; +#ifdef __cplusplus +#define CFUNC extern "C" +#else +#define CFUNC +#endif + #define OBJECT_FUNCDECLARE(_obj, _clsid)\ static int _obj##QueryInterface(HOBJECT object, IIDTYPE iid, const void **pInterface); \ static int _obj##AddRef(HOBJECT object); \ @@ -372,7 +379,7 @@ int str2iid(const char* str, IIDTYPE iid); static int _obj##Register() {\ return objectCreateRegister(_clsid, _obj##Create, _obj##ModuleInfo); \ }\ - OFUNCPTR A_u_t_o_registor_##_obj = (OFUNCPTR)_obj##Register; + CFUNC int (*A_u_t_o_registor_##_obj)() = _obj##Register; #define INTERFACE_HEADER(_obj, __interface, _localstruct) \ (int)&(((const _localstruct*)0)->__##__interface##_ptr), \ diff --git a/src/dlist.c b/src/dlist.c index d261f25..e461418 100644 --- a/src/dlist.c +++ b/src/dlist.c @@ -262,7 +262,7 @@ QUERYINTERFACE_END static const char* dlistheaderModuleInfo() { - return "1.0.1-20210608.0612 Dual List Header"; + return "0.3.0-20210608.0612 Dual List Header"; } static int dlistheaderCreate(const PARAMITEM* pParams, int paramcount, HOBJECT* pObject) -- GitLab