VS换成VS时错误汇总: /* ------自己编写*/

时间:2024-04-03 07:06:15

1. error MSB8020

将vs2012的项目用vs2013编辑器打开会出现如下错误提示:

错误    1    error MSB8020: The build tools for Visual Studio 2012 (Platform Toolset = 'v110') cannot be found. To build using the v110 build tools, please install Visual Studio 2012 build tools.  Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Upgrade Solution...".    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets    64    5    MFCApplication1

解决方式:

右击项目-->属性-->常规-->平台工具集

VS2010换成VS2013时错误汇总: /* ------自己编写*/

修改为如下即可:

VS2010换成VS2013时错误汇总: /* ------自己编写*/


转自:https://blog.csdn.net/davebobo/article/details/51123621


2. error LNK2001:

VS2010换成VS2013时错误汇总: /* ------自己编写*/

此问题是没有添加atls.lib库文件。

本机atls.lib库文件位置:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\lib\amd64

解决办法:将该文件夹添加到项目库文件夹中:

(右键项目 ->属性 配置属性--》连接器-->常规--》附加库目录  中加上xxx.lib所在目录)

VS2010换成VS2013时错误汇总: /* ------自己编写*/

VS2010换成VS2013时错误汇总: /* ------自己编写*/

VS2010换成VS2013时错误汇总: /* ------自己编写*/

(添加库文件方法,参考:https://blog.csdn.net/phenixyf/article/details/80089693)

关于atls.lib库即其添加是参考如下这些链接找到的方法:

https://blog.csdn.net/x356982611/article/details/40817633

https://blog.csdn.net/91program/article/details/44150157

https://blog.csdn.net/hsluoyc/article/details/46312293

https://www.cnblogs.com/lidabo/archive/2012/08/14/2638409.html


3. 模块计算机x64与目标计算机x86冲突

VS2010换成VS2013时错误汇总: /* ------自己编写*/

修改这两个地方:

确保这两个地方没有问题:

1:项目解决方案——属性——连接器——高级——目标计算机,看目标计算机是否是MachineX64,不是的话更改为。

2:配置管理器——新建(有的话直接选择)x64

VS2010换成VS2013时错误汇总: /* ------自己编写*/

红框中改成MACHINEx64

VS2010换成VS2013时错误汇总: /* ------自己编写*/

VS2010换成VS2013时错误汇总: /* ------自己编写*/

VS2010换成VS2013时错误汇总: /* ------自己编写*/

解决这个问题,参考了下面的链接:

https://blog.csdn.net/holybin/article/details/50881475

https://www.cnblogs.com/code-wangjun/p/6624551.html


4. fatal error LNK1561: 必须定义入口点

    右键->属性->链接器->系统->子系统,下拉框选择:窗口 (/SUBSYSTEM:WINDOWS)

    转自:http://blog.sina.com.cn/s/blog_7607703f0101ga13.html


5. 无法打开源文件"stdafx.h"

    之前VS2010的项目,一打开就报IntelliSense 无法打开源文件"stdafx.h"

    原因网上查了一下是因为VS2013项目属性 C/C++预编译头默认包含了。

    网上的解决办法是把#include <stdafx.h>注释掉。

    参考:https://blog.csdn.net/lphbtm/article/details/50730807

    实际操作时,发现注释掉后,此错误就没有了,但再编译过程中又会报错,

VS2010换成VS2013时错误汇总: /* ------自己编写*/

   这是再把注释取消掉,即再把#include <stdafx.h>添加上即可。


6. error LNK2019: unresolved external symbol:

    一种可能是没有连接上响应的函数所在的库导致的链接错误:

    查看:

        VC6:

        工程、设置、C/C++、分类:Preprocessor、附加包含路径:填写附加头文件所在目录 逗号间隔多项
        工程、设置、Link、分类:Input、附加库路径:填写附加依赖库所在目录 分号间隔多项
        工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项
        VS20xx:
        项目、属性、C/C++、附加包含目录:填写附加头文件所在目录 分号间隔多项
        项目、属性、链接器、附加库目录:填写附加依赖库所在目录 分号间隔多项
        项目、属性、链接器(点前面的+展开)、输入、附加依赖项:填写附加依赖库的名字.lib 空格间隔多项

    一种可能是有extern "C"

    参考:https://bbs.csdn.net/topics/390440996

1.前言

error LNK2019: 无法解析的外部符号这个错之前见过很多次,能知道最根本的原因在于链接过程中没有搜索到程序用到的库文件,即*.lib。
笔记本重装了系统,有32Bit升到64Bit,运行VTK程序时,始终报错如下:
1>     正在创建库 E:\Driverprogram\imgport\Debug\imgport.lib 和对象 E:\Driverprogram\imgport\Debug\imgport.exp
1>Monitor.obj : error LNK2019: 无法解析的外部符号 "int __cdecl start_convert(int,int,char *,bool)" ([email protected]@[email protected]),该符号在函数 "int __stdcall iEndDocPort(void *)" ([email protected]@[email protected]) 中被引用
1>p2jpg.obj : error LNK2019: 无法解析的外部符号 "void __cdecl jpeg_destroy_compress(struct jpeg_compress_struct *)" ([email protected]@[email protected]@@Z),该符号在函数 _Bmp2Jpg 中被引用
1>p2jpg.obj : error LNK2019: 无法解析的外部符号 "void __cdecl jpeg_finish_compress(struct jpeg_compress_struct *)" ([email protected]@[email protected]@@Z),该符号在函数 _Bmp2Jpg 中被引用
1>p2jpg.obj : error LNK2019: 无法解析的外部符号 "unsigned int __cdecl jpeg_write_scanlines(struct jpeg_compress_struct *,unsigned char * *,unsigned int)" ([email protected]@[email protected]@[email protected]),该符号在函数 _Bmp2Jpg 中被引用。

已经确信所有的依赖库文件都已经正确加载,为什么还会出现这个问题???
本文重点归纳error LNK2019出现的原因,并提供相应的解决办法。

2.原因归纳

2.1 采用开源程序,忘记添加依赖项

这个是最常见的问题。
解决办法如下:
VC6:
工程、设置、C/C++、分类:Preprocessor、附加包含路径:填写附加头文件所在目录 逗号间隔多项
工程、设置、Link、分类:Input、附加库路径:填写附加依赖库所在目录 分号间隔多项
工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项
VS20xx:
项目、属性、C/C++、附加包含目录:填写附加头文件所在目录 分号间隔多项
项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项
项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项

2.2 X64编译,采用Win32Debug

这个错误就是困扰笔者一天的Bug所在。之前完全没有发现。我一直采用32Bit操作系统进行VITK开发,因为兼容国外的一个开源程序法,更换了64Bit系统!
用过VITK的人都知道,在使用他们是必须在当前的环境下进行编译生成*.lib和*.dll文件。因此 利用VS2013 DeBug+X64编译了这些文件,但是在运行程序时报错了!!!
这是Win32和X64细节造成的!更改前后如下图所示:
VS2010换成VS2013时错误汇总: /* ------自己编写*/

VS2010换成VS2013时错误汇总: /* ------自己编写*/

3. VS2010  Win32转换X64

1.点击“Win32”下拉框,打开“配置管理器”
VS2010换成VS2013时错误汇总: /* ------自己编写*/
2.点击“活动解决方案管理平台”下拉框,选“新建”
VS2010换成VS2013时错误汇总: /* ------自己编写*/
3.点击“键入或选择新平台”下拉框,选"x64",然后点击“确定”
VS2010换成VS2013时错误汇总: /* ------自己编写*/
4.配置完成,可以看见项目平台都变为x64了,点击关闭即完成。
VS2010换成VS2013时错误汇总: /* ------自己编写*/
参考:https://blog.csdn.net/shenziheng1/article/details/54588457