VC回调函数

本文介绍了一种DLL间通信的方法,具体展示了如何通过定义全局导出函数实现dxx.dll向sxxx.dll发送消息,并通过注册回调函数的方式实现sxxx.dll向dxx.dll发送消息的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.场景:dxx.dll 与sxxx.dll 之间需要互通信,sxxx.dll是dxx.dll 的附加依赖项。

 

二.dxx.dll 向sxxx.dll 发消息

a)        在sxxx.dll 中定义全局导出函数

SDJY_API boolDZHSendMsg2Sdjy(LPCSTR strparam );

 

b)        dxx.dll 中直接调用

DZHSendMsg2Sdjy(strparam.c_str());

 

三.sxxx.dll向dxx.dll 发消息

a)        在sxxx.dll 中定义导出函数RegisterDZHCallBack,参数是一个函数指针,dxx.dll 调用这个导出函数

#pragma once
#include "sdjyExport.h"
#include <wtypes.h>
     
 typedef void (WINAPI*PFCALLBACK)(LPCSTR strUrl) ;
 
SDJY_API voidInitializeSdjy( LPCSTR lpCmdLine );
SDJY_API void WINAPIRegisterDZHCallBack(PFCALLBACK func);//定义导出函数RegisterDZHCallBack,参数是一个函数指针
SDJY_API voidUnInitializeSdjy( void );
SDJY_API boolDZHSendMsg2Sdjy(LPCSTR strparam );


b)        在dxx.dll 中调用RegisterDZHCallBack(SendSdjy2Dzh); SendSdjy2Dzh是全局的函数名,且参数与a中所描述的PFCALLBACK的参数相同

c)        当调用了RegisterDZHCallBack后,将传过来的函数指针保存起来

void CDZHKVMsgHelper::RegisterDZHCallBack(PFCALLBACK func)

{

            gSend2DzhCallBack = func;

}

 

// gSend2DzhCallBack 声明:PFCALLBACK gSend2DzhCallBack;

 

d)        当sxxx.dll 要向dxx.dll 发消息时,即调用函数指针即可

voidCDZHKVMsgHelper::SendData( string& strData, bool bBase64/* = false*/  )
{
         if(gSend2DzhCallBack)
         {
                   (*gSend2DzhCallBack)(strData.c_str());
         }
}


 

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值