2006年7月8号

    周五下班在班车上妹妹跟我说,“你个猪头说了多少次要写blog,结果就改了个颜色,什么也没有”,我说,“呵呵,哥忙啊,周末一堆事,本来想写。。。”刚刚哄昨天下夜班的准老婆睡下了,洗了个澡,外面开始下雨了,凉快了不少,打开电脑,决定今天开始写点东西。

    昨天帮软件部的一位MM调程序,开始觉得很简单,不就是编译不通过嘛,估计就是什么链接库没设置对,或者就是UNICODE宏开关定义的不对,再了不起也就是条件编译中条件定义的不对,结果没想到,调了大半天也没搞定,无奈把工程发到我的机器下,仔细研究起来。。。

    她的工程是根据一个算法来绘制wafer图,绘图的代码被做成了一个QCanvasView的派生类,这个类是其他同事提供的,工程在VS2005下编译,工程文件是用QMake生成的,编译能够通过,不过链接的时候提示说QValueList的成员函数找不到,仔细看过她的代码,按理说这个类是被包含了进来的,没理由找不到,而且这个类是由一个模版类派生出来的,完全可以找到所有的成员函数,我重新规划了工程,把生成的工程删除,自己创建一个win32工程,然后加入qt库等编译选项支持,再次编译,问题依然!或许qt条件编译的影响,我打算仔细看一下相关的头文件(QT我没怎么仔细学过,看了一些源代码,勉强能够做些应用程序),在qcanvas.h中果然有个宏(QT_CANVAS_MODULE)定义了一个条件,决定QCanvasItem是否是一个导出函数,哈哈,二话不说,先把它定义成非导出函数再说,undef,编译,链接,OK了,久违了的1built, 0 warnings, 0 errors,搞定^_^

    交工仅仅5分钟不到,电话打过来了,“bt啊,程序是能运行了,但是画的图不对啊”,“不可能啊”(程序员常用短语),跑过去一看,果然,wafer上的die全都看不到了,难道这样屏蔽有问题?恢复条件定义,修改一下工程文件,把生成的cpp加到工程中,编译通过,不过有警告,运行时提示找不到MSVCRTd80.dll。VS2005中新增加了一个特性是manifest技术,简单的说,如果一个应用程序引用了一个没有用manifest的动态库,在运行时就会提示找不到相应的动态库,这个MM的QT库是用vc6编译的,生成的dll肯定没有manifest,于是引用失败理所当然,看来都是vs2005惹的祸,用VC6重建工程,经过一番折腾,再次看到0 errors 0warnings, 运行,一切正常,可以放心过个周末了。

    事后在回来的路上,想起一个问题,应该在一个团队或者项目中形成一种统一的开发环境,这样每个人就算是喜欢用自己顺手的开发工具(个人比较偏爱VS2005+VA1445)也必须保证能够在这个统一的开发环境中正确生成目标代码,这样,大家在相互交换工程,代码的时候就不会出现编译环境不同引来的一系列麻烦,如果我我来建设一只开发团队,应该怎么建立这样一个规范的开发环境呢。其实这个创建这样一个环境也是对团队成员的一种管理形式,而这种管理可能更会体贴程序员,提高大家的工作效率,比起单纯的制定规范或者规章制度要有效的多吧。

    第一次就写了这么多,以后的日子难过了,呵呵。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值