在VC中使用zlib遇到的问题 本帖最后由 liufan291410 于 2010-12-31 09:34:53 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 memset(press,'\0',sizeof(press));memset(unpress,'\0',sizeof(unpress));这两个都不对,sizeof(press)为指针的长度,32位为4 大家都说说嘛我用了memset(press,'\0',1024) 和 ZeroMemory(press,1024) 都不行,还是一样的情况。 1.iResult=send(sockClient,(const char*)&Sendinfo,len+10,0); 为啥要+10?2.有关datainfo的代码贴出来。3.memset(press,'\0',sizeof(press))不对,原因上面已经说了4.compress没有判断返回值,这是不对的 memset(unpress,'\0',1024*sizeof(BYTE)); 对于楼上大哥的问题我一一说下:1、因为我发送的是一个Sendinfo结构体,而我压缩的是另一个结构体datainfo的数据,然后赋值给Sendinfo.Bufdata成员数组。其Sendinfo的结构如下:typedef struct _COMMUNICATION_PACKET{ int Flags; long lSession; BYTE Bufdata[512];}COMPACKET;2、datainfo结构就是保存的一些数据,很长就不要贴了,再说跟这无关紧要吧。3、后面我改了,memset(press,'\0',1024) 和 ZeroMemory(press,1024) 都不行,希望大哥给个示例,我太菜了。4、我感觉没有判断了返回值,不至于导致程序异常终止吧。希望大家有什么说什么,多多讨论下,我问的问题可能很菜,但大家也要体谅下菜鸟哦! memcpy(Sendinfo.Bufdata,press,len);你确定你的长度小于512? 那是肯定的,我后面把Bufdata的大小也改成了1024,而且在Debug下跟踪了下数据,绝对是小于512的,大概只有100多。 我还说一下,在Debug模式下没有出现异常终止的情况,可以正常运行。 看看press是否为NULL?问题应该不在所贴代码处,去其他地方找找 在Release模式下编译后,出现如下的警告信息:zlib.lib(d000062.o) : warning LNK4078:multiple ".text" sections foundwitch defferent attributes (E0300020)LINK:warning LNK4089:all references to "d000000.o" discarded by /OPE:REFLINK:warning LNK4089:all references to "d000062.o" discarded by /OPE:REF我把两边的这几行代码去掉后,不用压缩和解压功能,直接发送,一点问题也没有。 看来还是没有找到问题的症结所在,也有可能是我的zlib库有问题,不过还是谢谢大家了! MFC插入的窗体是类还是实例? 关于CTreeCtrl的问题 通过OLEDB访问SQLCE时,该如何获得IDBInitialize接口啊? 半透明处理问题 动态创建控件出错,谁来帮我??? 每次启动机子时!SQL Server总是处于运行状态,怎么能让他不启动呢! 到底怎么用TransparentBlt和AlphaBlend函数!? ShellExecute使用方法 如何知道打包的程序需要用到哪些DLL? win7 下richeditview 不能拖曳文件 寻求非常熟悉嵌入式专业的前辈! 一个窗体类继承的问题
memset(unpress,'\0',sizeof(unpress));
这两个都不对,sizeof(press)为指针的长度,32位为4
我用了memset(press,'\0',1024) 和 ZeroMemory(press,1024) 都不行,还是一样的情况。
为啥要+10?
2.有关datainfo的代码贴出来。
3.memset(press,'\0',sizeof(press))不对,原因上面已经说了
4.compress没有判断返回值,这是不对的
1、因为我发送的是一个Sendinfo结构体,而我压缩的是另一个结构体datainfo的数据,然后赋值给Sendinfo.Bufdata成员数组。其Sendinfo的结构如下:
typedef struct _COMMUNICATION_PACKET
{
int Flags;
long lSession;
BYTE Bufdata[512];
}COMPACKET;2、datainfo结构就是保存的一些数据,很长就不要贴了,再说跟这无关紧要吧。
3、后面我改了,memset(press,'\0',1024) 和 ZeroMemory(press,1024) 都不行,希望大哥给个示例,我太菜了。
4、我感觉没有判断了返回值,不至于导致程序异常终止吧。希望大家有什么说什么,多多讨论下,我问的问题可能很菜,但大家也要体谅下菜鸟哦!
你确定你的长度小于512?
zlib.lib(d000062.o) : warning LNK4078:multiple ".text" sections found
witch defferent attributes (E0300020)
LINK:warning LNK4089:all references to "d000000.o" discarded by /OPE:REF
LINK:warning LNK4089:all references to "d000062.o" discarded by /OPE:REF
我把两边的这几行代码去掉后,不用压缩和解压功能,直接发送,一点问题也没有。