`

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

阅读更多

最近我需要维护的一个代码,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的序列号一样。

 

 

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

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

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

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

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

 

 

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics