dll中的函数和主程序通讯的问题

时间:2022-09-29 13:14:24
想实现的功能是

dll中接收数据,校验数据,把正确的数据包传给主程序

1.现在有个问题,如何通知主程序,它收到了一个完整的数据包呢?就像Windows的事件通知一样。

2.dll要写成标准的DLL形式,保证不同的语言(delphi,vb)都可以调用。

请问,要实现这样的功能,采用什么方式比较好?

我有个想法,在调用dll函数的时候,传入一个回调函数,比如

dll中的函数

begin_receive(void *func)//这个参数是函数指针,当接收到正确的包以后,就调用这个函数,这个函数由主程序来实现。这样变相就能实现通知主函数的功能

不知道这样的做法有问题吗?

请各位达人各抒己见,谢谢!

5 个解决方案

#1


没问题,呵呵

#2


我的一般做法是在回调函数中发送windows消息给主程序,或者用一个队列处理,最简单就是直接处理数据

#3


引用 2 楼 socoola 的回复:
我的一般做法是在回调函数中发送windows消息给主程序,或者用一个队列处理,最简单就是直接处理数据


回调函数指的是Dll调用主线程的函数吧,按照你的说法,为什么要在回调函数中发送消息给主程序呢?

不是Dll主动调用主程序的函数吗?不需要通知了吧

#4


引用 3 楼 cppfile 的回复:
引用 2 楼 socoola 的回复:
我的一般做法是在回调函数中发送windows消息给主程序,或者用一个队列处理,最简单就是直接处理数据


回调函数指的是Dll调用主线程的函数吧,按照你的说法,为什么要在回调函数中发送消息给主程序呢?

不是Dll主动调用主程序的函数吗?不需要通知了吧

一般主程序是有界面线程的,dll一般拥有自己的线程,为了2者之间良好的通讯,可以使用消息或者队列来通讯。
如果没有界面,处理就简单很多

#5


没问题的 

#1


没问题,呵呵

#2


我的一般做法是在回调函数中发送windows消息给主程序,或者用一个队列处理,最简单就是直接处理数据

#3


引用 2 楼 socoola 的回复:
我的一般做法是在回调函数中发送windows消息给主程序,或者用一个队列处理,最简单就是直接处理数据


回调函数指的是Dll调用主线程的函数吧,按照你的说法,为什么要在回调函数中发送消息给主程序呢?

不是Dll主动调用主程序的函数吗?不需要通知了吧

#4


引用 3 楼 cppfile 的回复:
引用 2 楼 socoola 的回复:
我的一般做法是在回调函数中发送windows消息给主程序,或者用一个队列处理,最简单就是直接处理数据


回调函数指的是Dll调用主线程的函数吧,按照你的说法,为什么要在回调函数中发送消息给主程序呢?

不是Dll主动调用主程序的函数吗?不需要通知了吧

一般主程序是有界面线程的,dll一般拥有自己的线程,为了2者之间良好的通讯,可以使用消息或者队列来通讯。
如果没有界面,处理就简单很多

#5


没问题的