精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品开源心得,转载请注明出处:锐英源,www.wisestudy.cn,孙老师作品,联系电话13803810136。
2014年11年30日,郑州周末夜校班学员李同学在工作里遇到一个移植问题,需要把VC++6下项目移植到VS2010或VS2013,中间遇到层出不穷的问题,他的上级领导也没有解决,只是想了个折衷的方法,先用2013升级下,再用2012打开,很麻烦,所以向锐英源求助,锐英源用丰富的工作经验和英语经验解决了问题,并解释了问题的原因,李同学深感佩服。
VC6的工作区文件是dsw文件,VS2010打开这个文件后,会自动升级,升级时有些提示,选择是通过。初次编译,就有很多链接错误,如下:
error LNK2019: 无法解析的外部符号
error LNK2001: 无法解析的外部符号
编译器先生成符号,有符号才能链接。在链接时找不到符号,链接就通过不了。符号出处要么在代码里,要么是库里,简单的问题就是符号对应的代码没加到项目里,把对应的代码加到项目里就可以解决了。用此方法把1步骤出现的简单问题解决了。但是又遇到类似如下问题:
1>libcmtd.lib(crt0dat.obj) : error LNK2005: _exit 已经在 msvcrtd.lib(MSVCR100D.dll) 中定义
1>libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class std::locale::_Locimp * __cdecl std::locale::_Init(void)" (?_Init@locale@std@@CAPAV_Locimp@12@XZ) 已经在 msvcprtd.lib(MSVCP100D.dll) 中定义
对于已经定义问题,就要忽略特定的库lib文件,忽略库的界面如下: