Visual Studio问题集锦by低调年华,未完待续
处理VisualStudio2019代码错误:错误MSB4030“是(sdl)”对于“CL。。。
处理VisualStudio2019代码错误:错误MSB4030“是(sdl)”对
于“CL。。。
我的情况:⾸先代码出现c4996错误,按照⼤佬的博⽂进⾏了关闭SDL安全检查与添加宏定义的操作,进⽽出现了MSB4030的错误:
严重性代码说明项⽬⽂件⾏禁⽌显⽰状态
“错误 MSB4030 “是(/sdl)”对于“CL”任务的“SDLCheck”参数是⽆效值。“SDLCheck”参数的类型为“System.Boolean”。
如图所⽰:
我的解决⽅式:右键源⽂件—属性—配置属性—C/C++—SDL检查,将选项的内容全部删除,如图所⽰:
然后就可以正常运⾏程序啦
希望可以帮到你~
visualstudio调试方法
visualstudio调试⽅法
最近碰巧读了Ivan Shcherbakov写的⼀篇⽂章,《》。这篇⽂章只介绍了⼀些有关Visual Studio的基本调试技巧,但是还有其他⼀些同样有⽤的技巧。我整理了⼀些Visual Studio(⾄少在VS 2008下)原⽣开发的调试技巧。(如果你是⼯作在托管代码下,调试器会有更多的特性,在CodeProject中有介绍它们的⽂章),下⾯是我的整理的⼀些技巧:
1. 异常中断 | Break on Exception
2. Watch窗⼝中的伪变量 | Pseudo-variables in Watch Windows
3. 符号越界后查看堆对象 |
4. 查看数组的值
5. 避免进⼊不必要的函数
6. 从代码启动调试器 | Launch the debugger from code
7. 在Output窗⼝打印
8. 隔离内存泄漏
9. 调试发⾏版 | Debug the Release Build
10. 远程调试
11. 数据断点
12. 线程重命名
13. 给指定线程设置断点
14.(粗略)估算执⾏时间
15. 数字格式化
16. (内存)数据格式化
17.系统DLL中断
18.加载符号表
19. 监测MFC中的内存泄漏
20. 调试ATL
技巧1:异常中断
在处理被调⽤之前,异常发⽣时可以启动调试器进⾏中断,可以让你在异常发⽣后⽴即调试程序。操作调⽤栈便于你去查找异常发⽣的根本原因。
Vistual Studio允许你去指定想要中断的异常类型或者特殊异常。选择菜单Debug>Exceptions弹出对话框,你可以指定原⽣的(或者托管的)异常,除了调试器⾃带的⼀些默认异常,你还可以添加⾃⼰的⾃定义异常。
Visual Studio集成开发环境练习题参考答案
Visual Studio集成开发环境练习题参考答案Visual Studio是一款功能强大的集成开发环境(Integrated Development Environment,简称IDE),广泛用于软件开发和编程练习。它提供了丰富的工具和功能,可以帮助开发者提高效率和代码质量。
在这篇文章中,我们将为您提供一些Visual Studio练习题的参考答案。
练习题一:创建一个控制台应用程序
1. 打开Visual Studio,并选择“新建项目”。
2. 在模板列表中选择“Visual C#” -> “控制台应用(.NET Core)”。
3. 输入项目名称,并选择保存路径。
4. 单击“确定”按钮创建项目。
5. 在解决方案资源管理器中,双击打开Program.cs文件。
6. 在Main方法中输入以下代码:
```csharp
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.ReadKey();
}
}
}
```
7. 运行代码,可以看到控制台输出了"Hello World!"。
练习题二:添加新的源代码文件
1. 在解决方案资源管理器中,右键点击项目名称,选择“添加” -> “新建项”。
2. 在模板列表中选择“Visual C#” -> “类”。
3. 输入文件名称,并选择保存路径。
4. 单击“添加”按钮创建新的源代码文件。
VisualStudio问题集锦by低调年华,未完待续
VisualStudio问题集锦by低调年华,未完待续
问题集锦
vs2013的安装需要⽹络接⼊,否则安装后部分功能⽆法使⽤!
1.error MSB: 3073,已退出,代码1
解决⽅法:项⽬属性,⽣成事件,后期⽣成事件,命令⾏(改为默认即可)
2.VS2010显⽰⾏号
解决⽅法:⼯具,选项,⽂本编辑器,C/C++,⾃动换⾏,⾏号。
3.error LNK 1120:⽆法解析的外部命令
解决⽅法:这个问题的原因是有头⽂件,但是找不到实现。
1)只包含了头⽂件,只有这个函数的声明,没有包含这个函数的实现(实现⼀般放在cpp ⽂件中的)。所以只能通过编译,连接不成功。
2)另⼀个原因是函数的声明和实现都放在头⽂件中了,⼀般要把声明放头⽂件中,实现放在cpp⽂件中。这样每个#include该头⽂件的⽂件都会有⼀份该函数的实现,连接的时候,连接器不知道连接哪⼀个实现,于是报错。
4.error LNK 2019:⽆法解析的外部符号
原因:lib库可能⽆法匹配,更换lib库即可。
5.关于⽆法解析的外部命令的所有可能原因
考虑可能的原因
[0]出现⽆法解析可能是因为lib⽂件不正确,⽐如64位的编译配置,结果使⽤的是32位的lib 包.
[1]只写了类声明,但还没有写实现类,造成调⽤时⽆法解析
[2]声明和定义没有统⼀,造成链接不⼀致,⽆法解析
[3]没有在项⽬属性页的链接器的命令⾏选项加⼊相应的类包。
[4]没有在c++包含⽬录和库⽬录加⼊相应的类包路径
[5]在测试⼯程中被测⽂件⽬录可能需要包含被测类的cpp定义⽂件
[6]ICE接⼝测试时,⽆法解析可能因为被测⽂件没有包含进相关的cpp⽂件,另外,在TestSuite_ProjectRun.h⽂件中需要包含IProjectRun.h头⽂件,及相关的头⽂件(举例)。
VisualStudio代码优化技巧教程
VisualStudio代码优化技巧教程(第一章)VisualStudio 代码优化技巧教程
在软件开发过程中,优化代码是提高效率和性能的关键步骤之一。Visual Studio作为开发者最常用的集成开发环境之一,提供了许多强大的工具和技巧,帮助开发者优化其代码质量和性能。本教程将介绍一些常用的Visual Studio代码优化技巧,帮助开发者提高开发效率和优化代码性能。
(第二章)使用编码规范和代码分析工具
遵循一致的编码规范可以使代码更易于阅读和维护。Visual Studio附带了各种编码规范和代码分析工具,例如FxCop和StyleCop。通过设置编码规范并启用代码分析工具,开发者可以识别潜在的代码问题并及时修复,从而提高代码的质量和健壮性。
(第三章)优化代码结构
良好的代码结构可以提高代码的可读性和可维护性。在Visual Studio中,可以使用重构工具重构代码,并将代码拆分为小的、可重用的模块。此外,开发者还可以使用抽象类和接口来实现代码的模块化,以便在需要时进行替换或扩展。
(第四章)使用适当的数据类型
选择适当的数据类型可以有效地减少内存使用和提高代码执行
效率。在Visual Studio中,可以使用"Find All References"和"Replace All"命令来查找和替换代码中的不必要的隐式类型转换。
此外,使用具体的数据类型可以更好地描述数据的含义,提高代
码的可读性。
(第五章)使用高级语言功能
Visual Studio提供了许多强大的高级语言功能,如LINQ和Lambda表达式,可以简化代码并提高开发效率。通过使用这些功能,开发者可以更轻松地处理集合、过滤数据和执行复杂的查询
VisualStudio运行代码遇到的问题(已解决)
VisualStudio运⾏代码遇到的问题(已解决)
继上⼀篇记录到新安装vs code后遇到的问题后,这⼀篇将介绍运⾏代码开始就碰到的闭门羹。
项⽬中需要智能识别⽤到Anaconda3模块,运⾏代码时以“C:/Anaconda3/python.exe”开头,经验告诉,应该是python的编译环境设置引起的。
先卸载Anaconda3,发现vs code报下⾯的错误
& : ⽆法将“C:\Anaconda3\Scripts\conda.exe”项识别为 cmdlet、函数、脚本⽂件或可运⾏程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试⼀次。
所在位置 C:\Users\fengye\Documents\WindowsPowerShell\profile.ps1:4 字符: 4
+ (& "C:\Anaconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out- ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Anaconda3\Scripts\conda.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
添加Anaconda3环境变量到path中,本机是:
D:\Anaconda3
D:\Anaconda3\Scripts
VS常见调试错误信息
VS常见调试错误信息
1.检测到有潜在危险的 Request.Form 值
2.“在没有任何数据时进⾏⽆效的读取尝试”解决办法
3.数据为空。不能对空值调⽤此⽅法或属性。
4.阅读器关闭时 FieldCount 的尝试⽆效
5.未能映射路径
6.Unreachable code detected
7.索引超出范围。必须为⾮负值并⼩于集合⼤⼩
8.数据为空。不能对空值调⽤此⽅法或属性
9.数据源不⽀持服务器端的数据分页
10.对象名'***** '⽆效
11.在建⽴与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进⾏远程连接可能会导致此
失败。 (provider: 命名管道提供程序,error: 40 - ⽆法打开到 SQL Server 的连接) 12.SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间。
13.出现-------表⽰“属性”,此处应为“⽅法”
14.未能从程序集“DAL, Version=1.0.0.0, Culture=neutral,PublicKeyToken=null”中加载类型“DAL.SqlHelper”。
15.为过程或函数指定的参数太多
16.⽆法启动调试,绑定句柄⽆效
17.Unable to debugging on the web server.Debug failed because integrated windows authentication is not enable
VisualStudio问题集锦
1. #include "stdafx.h"
stdafx.h
1 名称的英文全称为:
所谓头文件预编译, AfXwi n.H )预先编译,以
后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。 这样可以加快编译速度,节省时间。 预编译头文件通过编译 stdafx.cpp 生成,以工程名命名,由于预编译的头文件的后缀是 “pch ”,所以编译结果文件是
projectname.pch 。
编译器通过一个头文件 stdafx.h 来使用预编译头文件。 stdafx.h 这个头文件名是可以在 project 的编译设置里指定的。 编译器认为, 所有在指令 #include "stdafx.h" 前的代码都是预编 译的,它跳过 #include
"stdafx. h" 指令,使用 projectname.pch 编译这条指令之后的所有代码。
因此,所有的 MFC 实现文件第一条语句都是:
#include "stdafx.h"。
2 详细工作原理及作用
stdafx.h 中没有函数库, 只是定义了一些环境参数, 使得编译出来的程序能在 32 位的操作 系统环境下
运行。
Win dows 和MFC 的in elude 文件都非常大,即使有一个快速的处理程序,
编译程序也要花
费相当长的时间来完成工作。由于每个 .CPP 文件都包含相同的in elude 文件,为每个.CPP 文
件都重复处理这些文件就显得很傻了。
为避免这种浪费, AppWizard 和VisualC++编译程序一起进行工作,如下所示: ◎ AppWizard 建立了文件stdafx.h ,该文件包含了所有当前工程文件需要的 MFCinclude 文
VisualStudio2019使用常遇到的问题以及解决办法
VisualStudio2019使⽤常遇到的问题以及解决办法
近期在做⼀个简单的socket聊天程序,算是对VS有了更多深⼊的认识,今天就来博客总结⼀下,以免以后使⽤过程中会忘记。
1.解决⽅案与项⽬
Vsiual Studio中⼀个解决⽅案中可以包含多个项⽬,⼀个项⽬中只能有⼀个main函数,所以像socket编程,server和client要分开的话就必须建⽴俩个项⽬。以socket程序为例,要想同时运⾏server和client的话可以采⽤这种⽅式。
1.⾸先将server项⽬设置成为启动项
⾸先⿏标右击项⽬,
再将其设置成为启动项,然后点击调试运⾏的就是启动项。
2.然后要运⾏client程序
右击client项⽬,
然后,点击调试后会出现三级菜单启动新实例。
2.⽆法引⼊⾃⼰写的头⽂件
这种情况会经常发⽣,是创建的项⽬中没有引⼊⾃⼰创建的.h⽂件,引⼊⽅法如下
项⽬->属性
->c/c++->常规->附加包含⽬录
将头⽂件所在⽬录引⼊就好了。
3.如何查看⼀个类型的定义
在使⽤VS过程中,我们会经常遇到⼀个莫名奇妙的类型,如WORD,DWORD,乍⼀看很奇怪,什么奇奇怪的类型,c++中还有这种类型,这是嘛呀?这时候我们就需要跳到WORD类型的定义当中去⼀探究竟。
直接右键要查看的类型,然后转到定义就会跳转到类型定义的⽂档中直接查看类型的定义了。
其实WORD就是unsigned short,DWORD也不过就是unsigned long罢了。
综合解决VisualStudio安装及安装出现问题
综合解决visual studio 2010安装及问题解决
微软发布了最新的 Visual Studio 2010 支持64位Windows,支持多显示器,以便您可以根据自己的需要来组织和管理工作。您还可以通过可视化设计器来充分发挥您的创造力。无论您的项目简单还是复杂,您都可以使用VS2010将您的理念变成现实!
首先说明一下,VC和VS区别吧,前者是一个工具,就是可用来编程开发软件等,就是一种语言,我们可以学习来编织自己的东西;而后者是一个工具箱,里面装载了较多的软件,后者就是微软自己把自己以前的东西集合在一起,就变成了VS,只是一个名字而已。
VS的功能在此我就不多说了,功能优于其他的单个工具,在网站开发等项目上显示出了其超越一般的功能和优势。藉此来和喜欢计算机和热衷于软件开发的同仁们共享和共勉。
有部分截图没有给出,我在此用语言详细说给,望各位见谅。
安装过程:
1、下载:可以去下载吧下载此软件,在此就不给出具体下载地址了,在百度搜
索下载吧,然后进入后,搜索visual studio 2010就可以了,我下载的那个容量为2.5G。
2、如图所示
此软件为旗舰版的,还有其他的如,专业版的。本人认为还是装在旗舰版的,因为其功能比较全面。
3、
4、下载后安装时请用虚拟光驱打开,可以下载一个虚拟光驱,我用的是魔方上
自带的虚拟光驱功能。
5、如图所示,
魔方虚拟光驱
6、
7、下面讲解具体安装过程:
安装截图
第一步:用虚拟光驱加载映像,打开此软件的安装包。在此具体截图及操作没有给出,相信虚拟光驱集体应用大家应该会的,在此就不多言了。
visual studio 6.0 link 2001常见错误解决总结
visual studio 6.0 link 2001常见错误解决总结
第一:
nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
nafxcwd.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype nafxcwd.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype
解决办法:
PROJECT->SETING->C/C++->PREPROCESSOR->定义_AFXDLL
第二:
解决外部符号错误:_main,_WinMain@16,__beginthreadex
在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
VisualStudio2019常见问题及解决办法
VisualStudio2019常见问题及解决办法
Ø简介
本⽂主要记录本⼈在⼯作中使⽤ VS2019 开发时所遇到的问题,以及对应的解决办法。
1.⽆缘⽆故代码报红⾊波浪线
2.解决 NU1605 包降级错误
3.解决 MSB3021 编译报错
4.配置私有 NuGet 源后使⽤时报错(401 Unauthorized)
1.⽆缘⽆故代码报红⾊波浪线
Ø错误描述
代码中引⽤的类,或引⽤的命名空间报红⾊波浪线,但是项⽬能正常⽣成成功,⽽且也能正常运⾏。
Ø解决办法
1)关闭 Visual Studio;
2)删除解决⽅案⽬录下的 .vs 隐藏⽬录和⽂件(该⽬录和⽂件会在下次打开项⽬后⾃动创建);
3)VS 重新打开项⽬OK(注意:之前项⽬中打开的⽂件会被全部清除掉,需要重新打开)。
2.解决NU1605 包降级错误
Ø错误描述
NU1605 检测到包降级: System.Threading 从4.3.0 降级到4.0.11。直接从项⽬引⽤包以选择不同版本。
DataModel -> mon -> log4net 2.0.8 ->System.Console 4.0.0 -> runtime.unix.System.Console 4.3.0 ->System.Threading (>= 4.3.0) DataModel -> mon -> log4net 2.0.8 ->System.Threading (>= 4.0.11)
Ø错误原因
1)从错误信息看出,是因为引⽤了第三⽅包"log4net",⽽导致依赖程序包之间的版本不⼀致所导致。
VS问题解决方法
关于vs2003安装总提示要重启问题
首先要安装第1步visual 系统必备,其它点不了.可点第1步安装就弹出"安装程序检测到另一个程序要求计算机重新启动.必须重新启动计算机后才能安装visual 系统必备.系统重新启动后,你需要重新启动安装程序.单击"确定"重新启动,单击"取消"退出安装程序,以后再安装."对话框.重启n次都弹出此对话框,无法安装.
解决办法:
在注册表删除
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\pendingfilerenameoperations
我用的是6张盘(3张VS,3张MSDN)的,用虚拟光驱,安装前需要先安装IIS,系统自带,没有的需要添加该组件,在控制面板里,并确保选中了IIS下的“Frontpage2000服务器扩展”项。
用虚拟光驱打开cd1,检测通过后会提示放入第三张盘,然后安装系统必备文件,完了之后再是cd1,cd2,只要按照提示操作就OK了。后三张是MSDN,也一起安装好了。
删除起始页上项目名称的方法.
其实起始页上的项目名称记录的是你曾经打开的某些项目的*.sln文件的地址。一般来说,默认的项目被存放在
X:\Documents and Settings\Administrator\My Documents\Visual Studio Projects 目录当中的,直接删除里面的文件夹可以清除一些项目。
但是有些项目并不是存放在这里面的,我们怎么样才能察看到这些项目的实际位置呢?将鼠标移到项目列表的链接上,状态栏有项目链接的地址,按这些链接地址把项目中的*.sln文件删除就可以了。
visual studio解决卡顿的方法
如果您在使用Visual Studio时遇到卡顿的问题,以下是一些常见的解决方法:
1. 更新Visual Studio:确保您的Visual Studio版本是最新的,因为更新中通常包含了性能改进和错误修复。
2. 关闭不必要的扩展和插件:某些扩展和插件可能会占用大量的内存和处理器资源,导致性能下降。尝试禁用或卸载不常用或无关的扩展,以提高性能。
3. 调整Visual Studio的设置:在"Tools"(工具)菜单下,找到"Options"(选项),然后选择"Environment"(环境)->"General"(常规),禁用无用的选项如自动检测文件更改、高级功能等。
4. 增加内存和处理器资源:如果您的计算机可用的内存和处理器资源不足,可能会导致Visual Studio的卡顿。尝试关闭其他占用资源大的应用程序,或者考虑升级您的计算机硬件。
5. 清理临时文件和项目缓存:Visual Studio生成过程中会产生大量临时文件和缓存,逐渐积累可能导致性能下降。定期清理临时文件和项目缓存,可以提高性能。
6. 限制解决方案(build)的并行度:在大型解决方案中,启用并行构建可能会占用大量的资源,导致卡顿。尝试将并行构建限制到较小的数量,以减轻资源的负载。
7. 禁用无用的调试器扩展:某些调试器扩展可能会降低调试性能。在"Tools"(工具)菜单下,选择"Options"(选项),然后选择"Debugging"(调试),启用/禁用需要的调试器扩展。
8. 重置Visual Studio设置:如果以上方法都无效,可以尝试重置Visual Studio的设置。在"Tools"(工具)菜单下,选择"Import and Export Settings"(导入和导出设置),然后选择"Reset all settings"(重置所有设置)。
visual studio中编程技巧
Visual Studio中编程技巧
1. 简介
Visual Studio是一个强大的集成开发环境(IDE),用于开发各种类型的应用程序,包括桌面应用程序、Web应用程序、移动应用程序等。在Visual Studio中,
有许多编程技巧可以帮助开发人员提高工作效率和代码质量。本文将介绍一些常用的Visual Studio编程技巧,希望能对开发人员有所帮助。
2. 快捷键
使用快捷键是提高编程效率的关键。以下是一些常用的Visual Studio快捷键:•Ctrl + K, Ctrl + C:注释选中的代码块。
•Ctrl + K, Ctrl + U:取消注释选中的代码块。
•Ctrl + /:在当前行插入或移除注释。
•Ctrl + Space:自动完成代码。
•Ctrl + .:显示快速操作菜单,可以快速应用一些常用的操作,如生成方法、重命名等。
•Ctrl + Shift + B:生成解决方案。
•Ctrl + F5:启动应用程序。
•Ctrl + Shift + V:粘贴并格式化代码。
•Ctrl + Shift + L:删除当前行。
•Ctrl + Shift + C:复制当前行。
•Ctrl + Shift + D:复制当前行,并在下一行粘贴。
以上仅是一部分常用的快捷键,通过熟练掌握这些快捷键,可以大大提高编程效率。
3. 代码导航
在大型项目中,代码往往会非常庞大,因此快速定位到需要的代码非常重要。Visual Studio提供了许多代码导航功能,帮助开发人员更轻松地浏览和编辑代码。
•使用Ctrl + T可以快速打开文件、类、方法等。
Visual Studio 问题集锦
1.#include "stdafx.h"
/*是预编译处理器把stdafx.h文件中的内容加载到程序中来。
stdafx.h
1名称的英文全称为:Standard Application Fram Extend
所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。
预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。
编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。因此,所有的MFC实现文件第一条语句都是:#include "stdafx.h"。
2 详细工作原理及作用
stdafx.h中没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。
Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题集锦
vs2013的安装需要网络接入,否则安装后部分功能无法使用!
1.error MSB: 3073,已退出,代码1
解决方法:项目属性,生成事件,后期生成事件,命令行(改为默认即可)
2.VS2010显示行号
解决方法:工具,选项,文本编辑器,C/C++,自动换行,行号。
3.error LNK 1120:无法解析的外部命令
解决方法:这个问题的原因是有头文件,但是找不到实现。
1)只包含了头文件,只有这个函数的声明,没有包含这个函数的实现(实现一般放在cpp 文件中的)。所以只能通过编译,连接不成功。
2)另一个原因是函数的声明和实现都放在头文件中了,一般要把声明放头文件中,实现放在cpp文件中。这样每个#include该头文件的文件都会有一份该函数的实现,连接的时候,连接器不知道连接哪一个实现,于是报错。
4.error LNK 2019:无法解析的外部符号
原因:lib库可能无法匹配,更换lib库即可。
5.关于无法解析的外部命令的所有可能原因
考虑可能的原因
[0]出现无法解析可能是因为lib文件不正确,比如64位的编译配置,结果使用的是32位的lib 包.
[1]只写了类声明,但还没有写实现类,造成调用时无法解析
[2]声明和定义没有统一,造成链接不一致,无法解析
[3]没有在项目属性页的链接器的命令行选项加入相应的类包。
[4]没有在c++包含目录和库目录加入相应的类包路径
[5]在测试工程中被测文件目录可能需要包含被测类的cpp定义文件
[6]ICE接口测试时,无法解析可能因为被测文件没有包含进相关的cpp文件,另外,在TestSuite_ProjectRun.h文件中需要包含IProjectRun.h头文件,及相关的头文件(举例)。
[7]import相关的无法解析内容,解决办法是在链接器的依赖项中加入相应的动态库
[8]出现如下错误的原因一般是动态库没有包进来。__imp
ProjectRun.obj : error LNK2019: 无法解析的外部符号__imp__StartHistoryLocalModule,该符号在函数"protected: virtual int __thiscall HiRTDB::CProjectRun::DoStart(void)" (?DoStart@CProjectRun@HiRTDB@@MAEHXZ) 中被引用
[9]error LNK2001: 无法解析的外部符号__imp___CrtDbgReportW
工程属性,C/C++,代码生成,运行时库选择MDd,
[10]无法解析的外部符号"__declspec(dllimport) public: int __thiscall HiRTDB::CTagTree::GetObjectA(int,struct HiRTDB::SBaseReadProps const &,struct HiRTDB::SBaseReadValues &)" (__imp_?GetObjectA@CTagTree@HiRTDB@@QAEHHABUSBaseReadProps@2@AAUSBaseR eadValues@2@@Z),该符号在函数"public: int __thiscall HiRTDB::CStringImpl::Get(int,struct HiRTDB::SStringReadProps const &,struct HiRTDB::SStringReadValues &)" (?Get@CStringImpl@HiRTDB@@QAEHHABUSStringReadProps@2@AAUSStringReadValues @2@@Z) 中被引用
原因可能是工程配置文件中有多余选项,请参考其他模块的配置选项,不要有多余配置。6.参数basepath不能是相对路径
解决方法:basePath不能是相对路径,在项目->配置属性->调试->中,将命令和工作目录改为绝对路径。这里将其改为默认即可。
7.应用程序无法正常启动,(代码0xc0150002)
解决方法:缺少此应用程序所需动态库的VC++运行库,安装对应的VC++运行库即可。
8.error LNK1123: 转换到COFF 期间失败: 文件无效或损坏
我已经将项目\属性\配置属性\清单工具\输入和输出\嵌入清单:原来是“是”,改成“否”,但是还是不行,这是为什么?
我以前是VS 2010,自从我装了VS2012之后就出现了这个问题,现在VS 2012已经卸载掉了,但还是不行。
解决方案:
VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123”错误,解决方案为将项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单“是”改为“否”即可,但是没新建一个项目都要这样设置一次。
在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资料,解决方案为:
第一步:与上相同。
第二步:将项目|项目属性|配置属性|连接器|清单文件|嵌入清单“是”改为“否”。
第三步:一般计算机经过上两步设置就能解决问题了,但是如果还有问题,那就按一下方法解决:
计算机是否为64bit操作系统,如是,继续。
查找是否有两个cvtres.exe。一个是C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe,另一个是C:\Windows\\Framework\v
4.0.30319\cvtres.exe。右键属性|详细信息查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。
意外的是,治本的办法是第三步,删除旧版本的cvtres.exe后,就不需要每次都设置配置了。
9.Error MSB8031
Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library.
实际上是VS2013把multi-byte character set (多字节)支持移除。需要安装vc_mbcsmfc.exe