求高手帮我看一下如何调用这段头文件中的C接口函数

kkman7304 2012-06-30 04:22:52

#if defined(__cplusplus) && !defined(CINTERFACE)

MIDL_INTERFACE("AFEA5514-AE9C-11D3-83AE-00A024BDBF2B")
IActQJ71E71UDP : public IDispatch
{
public:
virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Open(
/* [retval][out] */ LONG __RPC_FAR *lplReturnCode) = 0;

virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Close(
/* [retval][out] */ LONG __RPC_FAR *lplReturnCode) = 0;

#else /* C style interface */

typedef struct IActQJ71E71UDPVtbl
{
BEGIN_INTERFACE

HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
IActQJ71E71UDP __RPC_FAR * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);

ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
IActQJ71E71UDP __RPC_FAR * This);

ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
IActQJ71E71UDP __RPC_FAR * This);

HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfoCount )(
IActQJ71E71UDP __RPC_FAR * This,
/* [out] */ UINT __RPC_FAR *pctinfo);

HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetTypeInfo )(
IActQJ71E71UDP __RPC_FAR * This,
/* [in] */ UINT iTInfo,
/* [in] */ LCID lcid,
/* [out] */ ITypeInfo __RPC_FAR *__RPC_FAR *ppTInfo);

HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetIDsOfNames )(
IActQJ71E71UDP __RPC_FAR * This,
/* [in] */ REFIID riid,
/* [size_is][in] */ LPOLESTR __RPC_FAR *rgszNames,
/* [in] */ UINT cNames,
/* [in] */ LCID lcid,
/* [size_is][out] */ DISPID __RPC_FAR *rgDispId);

/* [local] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Invoke )(
IActQJ71E71UDP __RPC_FAR * This,
/* [in] */ DISPID dispIdMember,
/* [in] */ REFIID riid,
/* [in] */ LCID lcid,
/* [in] */ WORD wFlags,
/* [out][in] */ DISPPARAMS __RPC_FAR *pDispParams,
/* [out] */ VARIANT __RPC_FAR *pVarResult,
/* [out] */ EXCEPINFO __RPC_FAR *pExcepInfo,
/* [out] */ UINT __RPC_FAR *puArgErr);

/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Open )(
IActQJ71E71UDP __RPC_FAR * This,
/* [retval][out] */ LONG __RPC_FAR *lplReturnCode);

/* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Close )(
IActQJ71E71UDP __RPC_FAR * This,
/* [retval][out] */ LONG __RPC_FAR *lplReturnCode);

END_INTERFACE
} IActQJ71E71UDPVtbl;

interface IActQJ71E71UDP
{
CONST_VTBL struct IActQJ71E71UDPVtbl __RPC_FAR *lpVtbl;
};


};




是关于三菱PLC的h头文件中的一段,给的dll库
...全文
118 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2012-06-30
  • 打赏
  • 举报
回复
头文件里有什么接口, 你就用什么, DLL这个东西除了要链接进来你也没必要费心其他的事情了.
kkman7304 2012-06-30
  • 打赏
  • 举报
回复


#ifdef COBJMACROS


#define IActEasyIF_QueryInterface(This,riid,ppvObject) \
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define IActEasyIF_AddRef(This) \
(This)->lpVtbl -> AddRef(This)

#define IActEasyIF_Release(This) \
(This)->lpVtbl -> Release(This)


#define IActEasyIF_GetTypeInfoCount(This,pctinfo) \
(This)->lpVtbl -> GetTypeInfoCount(This,pctinfo)

#define IActEasyIF_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
(This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo)

#define IActEasyIF_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
(This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)

#define IActEasyIF_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
(This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)


#define IActEasyIF_get_ActLogicalStationNumber(This,pVal) \
(This)->lpVtbl -> get_ActLogicalStationNumber(This,pVal)

#define IActEasyIF_put_ActLogicalStationNumber(This,newVal) \
(This)->lpVtbl -> put_ActLogicalStationNumber(This,newVal)

#define IActEasyIF_Open(This,lplReturnCode) \
(This)->lpVtbl -> Open(This,lplReturnCode)

#define IActEasyIF_Close(This,lplReturnCode) \
(This)->lpVtbl -> Close(This,lplReturnCode)

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧