zoukankan      html  css  js  c++  java
  • VC++2010 bug

    软件复杂了,总会有或多或少的bug,今天就遇到一个,从表现来看是VC++ 2010的bug,因为这个确实很难测试覆盖。

    http://social.microsoft.com/Forums/zh-CN/visualcpluszhchs/thread/cae52fba-6af8-4f93-bfae-209d44d4f134/

    我这里有一个VC++2005的工程编译正常,之前曾升级到VC++2008也编译正常,今天升级到2010以后,编译失败,信息如下:

    1>------ Build started: Project: Cal, Configuration: Debug Win32 ------

    1>LINK : fatal error LNK1104: cannot open file 'E:workCalDebugCal.lib'
    1>
    1>Build FAILED.

    问题是Cal本身是一个dll工程,编译生成的应该是Cal.dll和Cal.lib,不可能link阶段依赖自己的lib。

    检查升级后的工程配置没有发现问题。磁盘可用空间足够,也没有只读的Cal.lib或者写入不能的目录。

    解决办法:

    整个项目在转换到2010前有一些工程不存在(unloaded),因为我并没有在当前这台机器上完整check out。

    在转换过程中看起来是VC2010错误的分析了依赖关系,把Cal依赖的别的工程错误的指向了Cal自己,变成了一个循环依赖。

    这个问题我暂时用下面的方法解决了:

    处理前,linker的命令行参数是: /OUT:".debugCal.dll" /INCREMENTAL /NOLOGO /DLL "opengl32.lib" "glew32.lib" "glu32.lib" "E:workCaldebugCal.lib" /DEF:".Cal.def" /MANIFEST /ManifestFile:".DebugCal.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:".debugCal.pdb" /MAP /MAPINFO:EXPORTS /SUBSYSTEM:WINDOWS /PGD:"E:workCaldebugCal.pgd" /TLBID:1 /DYNAMICBASE:NO /NXCOMPAT /NOASSEMBLY /MACHINE:X86 /ERRORREPORT:QUEUE

    处理办法:打开工程属性,选择common properties,找到 link library dependencies,把 true 改成 false。

    这样可以看到linker的命令行中的 "E:workCaldebugCal.lib" 被去掉了。

    当然我不认为这个是真正的完美解决办法,有待微软修正。

  • 相关阅读:
    python之路面向对象2
    [C#]扩展方法
    [UGUI]Text文字效果
    [UGUI]修改顶点
    [UGUI]帧动画
    [UGUI]图文混排(二):Text源码分析
    [UGUI]图文混排(一):标签制定和解析
    [Unity基础]镜头管理类
    [Unity工具]批量修改Texture
    323 XAMPP软件
  • 原文地址:https://www.cnblogs.com/skogkatt/p/4163346.html
Copyright © 2011-2022 走看看