VC++ SP6:创建socket出错 & 补丁不是白打的

本文讲述了在使用VC6进行开发时遇到的一个奇怪问题:程序在运行到特定代码时崩溃。通过尝试不同的解决方案,最终发现安装VC6的SP6补丁可以解决问题。这一经历强调了软件版本管理和配置管理的重要性。

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

最近我需要维护的一个代码,VC6的。

代码量不大,但是如果你用2008编译他会告诉你一堆错误,再加更大的一对warning。

所以他现在还是在用vc6编译。

 

哦,他还是日文编码,里面有很多的日文注释。

所以我需要搞一个日文的虚拟机,从同事手中拷贝了一个,恰逢里面还有vc6.

我本来以为这是一件开心的事。

然而郁闷却从此开始了。

 

程序中有形如下面这样的一段代码,编译没有问题,但每次运行到这里的时候都挂掉。

是的,根本无法成功。我们最终怀疑是环境的问题。

 

if(!m_job_socket.Create(PORT_NUMBER))
{
    //do something....
}

 

在经过了一系列尝试之后,问题仍然未解,我们决定看一下vc的版本。

遗憾的是vc6的about里面只是声称他是vc6,而没有SP几,异或其他小版本的信息。

 

算了,最终我们还是抱着试试看的态度,打了一下sp6。

也就是如此,我们问题解决了。

事情本质的原因是,微软自己亲手初始化的指一个针,在使用的时候莫名其妙的变成了null,不知道是误被free了。但既然微软在新版本中已经解决了这个问题,他们进一步的深度剖析他就已经没有了意义。程序员也很少会愿意在最新版本以外的软件上,浪费自己的时间,解决它的bug。

 

 

这篇blog我主要是想讲述一个故事 因为我很少在软件的升级过程中,亲身的体会到他修复了一些bug。

偶尔经历了一些,也都是一些小问题,通常无伤大雅,我都可以忍受。

(ps:"一些开源软件的早期版本" 和 "windows操作系统"应该除外)。

然而这次不同,这个问题让我很惊讶。虽然这已经是多年之前的事情。

朴素的vc6已经离我们渐渐远去。但还是给我们留下了很多的。比如那全是1的序列号一样。

 

 

故事之余,自然还有现实的郁闷。

我在这个问题上,白白浪费了好几个小时。

先撇开项目的其他问题不谈。

首先的一点,我们的配置管理有问题。

没有现成的环境,也没有文档告诉我环境应该是什么样的,只能靠我们自己摸索。

 

 

小步前进,一个一个消灭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值