VC6.0公认是MicroSoft出的经典编译器(但bug也不少,INC也老旧不全了),并且project如果setting不合理,在link过程中会报出各种匪夷所思的问题,让大家焦头烂额,本来我们的重心是优化算法,精简和强化逻辑,可是编译器自身的问题往往会浪费大量时间,还影响心情,下面我说说几个棘手的error,实际他们都归为一类问题:link的library不齐备。Error:
1.error BK1506:cannot open file StdAfx.sbr:No such file or directory(或其他.sbr)
2.error LNK2001: unresolved external symbol XXXXXXXX
3.fatal error LNK1181: cannot open input file ".\Release\xxxxx.obj
4.fatal error LNK1136: invalid or corrupt file
这几个问题的任意一个都足以让你纠结一阵了。
Solve:
1. 进入project -> settings -> Link -> object/library moudle 中填入你用的所以lib,比如我的
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib winmm.lib wininet.lib SkinMagicTrial.lib MSWSOCK.LIB
如果不全就会报出各种问题
2. -> project option 检查各lib是否齐备,比如我的
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib winmm.lib wininet.lib SkinMagicTrial.lib MSWSOCK.LIB
Addtional:
1.中间伴随多次删除Debug和Release文件夹
2.在General -> Microsoft Foundational Classes(MFC) -> Use MFC in a Shared DLL 和 Use MFC in a static Library 之间切换几次,但一般情况下(版本稍高时)最终定格在Use MFC in a Shared DLL,有些问题会莫名其妙的解决!
不过最终折腾了1个多小时,自己的问题都得到很好的解决,希望对大家有所帮助!