CSDN没有人回答的问题(关于创建DLL) ( 积分: 50 )

  • 主题发起人 主题发起人 南柯一梦
  • 开始时间 开始时间
我先说一下啊,首先DLL是提供给二次开发用户的
用户的客户端是一个PC,而该PC通过串口从下位机获取数据,下位机个数是不断变化的,PC收到收据后发往服务器,服务器通过调用DLL函数,获取下位机的相关信息。
难点:
1、下位机个数不固定
2、服务器只有通过调用DLL才能获取数据长度和用户信息
注:(SOCKET收到的原始数据格式(包头+数据长度+数据+包尾),原始数据是经过处理的,用户根本不能自己分析其内容,所以才有了此DLL的产生,求这个DLL的实现方法。
 
这个不难啊,还可以用消息实现。
dll内导出一个函数(参数是一个handle),你第一次载入dll时调用一下这个导出函数,传入主程序的handel,同时启动端口侦听,
然后dll收到数据后向此handle用sendmessage发消息,消息内有一个数据首地址和数据长度。
二次开发用户,只需在程序内接收特定的消息就好了。
 
我的DLL只负责解包,网络部分用户自己写,他们要求只提供解包函数
 
看这样行不行:
你dll导出一个函数:
包括几个参数(传入的数据首地址:tpoint;数据长度integer;var 传出的数据首地址:tpoint;var 传出的数据长度: integer)
然后你在dll内要getmem来申请一块内存,此内存保存要传出的数据。
用户调用你提供的函数后由用户freemem(传出的数据首地址,传出的数据长度);
 
时间差不多了,首先大家明白一个理儿啊,得事先分配内存才能接收数据
用户调用DLL之前得分配内存
经人指点只能用两函数实现了
1、获取长度
2、解包
顶者有分,平均分吧,没意见有意见的我也不管了!
 
如果用户觉得事先分配内存,事后释放内存太麻烦。
那还有一个简单的办法,用pchar字符串来传进传出数据。
当然,还需额外的两个函数,来实现数据与字符串的互相转换,简单一点的也可以用现成的函数,如十六进制与字符串的转换函数,base64函数等
 
后退
顶部