来源1:https://www.cnblogs.com/youyoui/p/5720719.html
来源2:https://blog.csdn.net/Carl_Qi/article/details/51171280#commentBox
问题:VS2015安装后stdio.h ucrtd.lib等文件无法识别问题,即include+lib环境变量配置
今天突然想在windows上装个 VS2015 玩玩,结果遇到了如下bug:
安装完 VS2015 后,直接新建项目->win32控制台->运行,结果报错!
"无法打开包括文件: “stdio.h”: No such file or directory”
"lnk1104:无法打开文件 ucrtd.lib ”
奇了怪了,stdio.h 和 ucrtd.lib 都是 VS 自带的头文件和库文件,都无法识别,所以第一反应就是这个头文件和库文件的目录没有正确的导入,即include 和 lib的环境变量出了问题。
这个问题网上有几个解决方法,但是本人试过大部分的解决方案都不好用,而且都是针对当前项目单独设置的(我可不想每次新建一个项目就得重新配一下环境,太麻烦了。。。),所以这里直接提供一个全局的解决方法:
1.首先打开VS2015,新建一个项目,我这里新建的项目名称为"201604172330_helloworld"(名称随意),然后点击菜单栏"视图"->"其他窗口"->"属性管理器",从而调出属性管理器页面。
2.我的"属性管理器"页面是在 VS2015 窗口的右侧,然后在项目名称"201604172330_helloworld"下找到"Debug | Win32"文件夹,双击"Microsoft.Cpp.Win32.user"。
3.在弹出的属性页中,点击左侧的"VC++ 目录",分别选择"包含目录" 和 "库目录" 右侧的下拉箭头,然后点击"编辑" ,从而修改环境变量。
4.对于include环境变量的编辑,首先取消勾选"从父级或项目默认设置继承", 然后在最上方添加红框中的5条路径,点击确定。
5.对于lib环境变量的编辑,保留勾选"从父级或项目默认设置继承", 然后在最上方添加红框中的1条路径,点击确定。
6.至此完成环境变量的重配工作,重新编译运行就正常了。
对于为什么之前的环境变量无法应用,网上普遍反映是VS2015中的一个Bug,而且我发现如果是选择"从父级或项目默认设置继承"时,在Windows Kits\10\include 和 Windows Kits\10\lib 目录下导入的是10.0.10240.0文件夹,但是我的本机目录下是10.0.10150.0文件夹,这是不一致的,这有可能导致了环境变量的配置错误,所以以上这种手工的配置方法是没问题的。
问题:VS2015community 无法查找或打开 pdb 文件
解决办法:
1.点击工具->选项, 在选项窗口中展开左侧菜单;
2.展开调试->常规,然后在右边的窗格中勾选“启用服务器支持”;
3.然后展开调试->符号,勾选“Windows符号服务器”,弹出的警告对话框,点击“确定”关闭选项窗口;
4.F5,或者点击“本地Windows调试器”调试运行程序,第一次运行该程序时,会从Windows服务器上下载相关的符号集,这需要一点时间;
5.随后,程序启动,就不会报这些问题了。
问题:VS2015communityF5调试程序时闪退
解决办法:
1.使用Ctrl+F5快捷键,或者选择调试->开始调试(不执行);
2.在程序入口main()函数的return语句之前加上getchar();
3.在程序入口main()函数的return语句之前加上system("pasue");
4.更改项目配置:项目->属性->配置属性->链接器->系统->子系统->控制台 增加“/SUBSYSTEM:CONSOLE”链接选项就可以了(该方法有时候没有用)。
问题:VS2015community 添加单元测试时,报很多无法解析的外部符号错误
解决办法:
邮件测试项目,属性->链接器->输入->附加依赖项,编辑,添加构建项目的Debug项目下的obj文件就可以了。
../PoCreate/Debug/PoCreate.obj
../PoCreate/Debug/DirGenerate.obj
../PoCreate/Debug/MsgidGenerate.obj
问题:VS2015community F9添加断点时,提示:当前不会命中断点 还没有为该文档加载任何符号
解决办法:
右键项目,选择重新生成就可以了
问题:VS2015community 文件的编码怎么转换
解决办法:
选择文件菜单下,高级保存选项,然后选择相应的编码就可以了。不过这样只能一个一个文件慢慢转换。
问题:VS2015community 打了断点,但是调试的时候断点没有生效
解决办法:
把文件的编码格式设置为Unicode,保存为UTF-8就可以了。