VS2015调试过程中的问题和解决

  1. 为项目添加所需的头文件和库文件
添加头文件:选中项目,右击选属性,选择C/C++->所有选项->附加包含目录,将所需添加的头文件路径加入;
添加库:在链接器中的附加库目录中添加需要的库所在目录,此外还需在链接器->输入->附加依赖项中将库文件添加进去。
  1. Fatal error C1900: “P1”(第“20150812”版)和“P2”(第“20130802”版)之间 IL 不匹配
原因:链接时使用了由更新版本编译的库文件,与当前的编译链接工具不匹配。
解答:两种方法
a.升级当前的编译链接工具,使其与库文件相匹配;
b.使用当前的编译链接工具重新对库文件进行编译
我的解决办法:第一种,重新下载安装VS2015 update 3版本
  1. 错误D8016“/ZI”和“/Gy-”命令行选项不兼容
原因:/ZI采用支持“编辑并继续”功能的格式生成程序数据库,如果想使用“编辑并继续”调试,由于它与大部分优化冲突,所以不能与优化选项相兼容。而/Gy-为全程优化,这两者冲突,二选一。
解决:在优化和“编辑并继续调试”之间二选一
  1. Microsoft 官方文档:https://msdn.microsoft.com/library
  2. VS2015 提示 未定义标识符"uintptr_t"
原因:在显示所生成的问题下拉框中选择“仅生成”,不要选则“生成+IntelliSense”。
IntelliSense为智能感知引擎判断的代码语法错误,由于资源有限,会出现误判,可将其选为“仅生成”。
  1. LNK2001无法解析的外部符号__imp__curl_global_init
解决:给工程添加依赖的库:项目->属性->链接器->输入->附加依赖项,把libcurld.lib添加进去,同时加入预编译选项:项目->属性->c/c++->预处理器->预处理器,把 BUILDING_LIBCURL或者CURL_STATICLIB添加上
  1. errorLNK2019: 无法解析的外部符号__imp__ldap_set_optionW,该符号在函数_Curl_ldap 中被引用
这是由于libcurl.lib会链接其他的库,因此把其他库也添加进去,需要添加的库为Wldap32.lib。
  1. error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MT_StaticRelease”(lib_json.lib)
原因:lib_json.lib库的编译选项为/MT , 而当前工程的编译选项为MDd,应保持一致。
解决:VC项目属性->配置属性->C/C++->代码生成->运行时库 设置为MT
  1. #error:  Please use the /MD switch for _AFXDLLbuildsSs
该错误要求我们将运行库设为/MD,由于第八条错误的存在,运行时选项必须为/MT静态编译,此时可以将属性页->配置属性->常规->MFC的使用”改为”在静态库中使用MFC” 即可。
  1. 链接器工具错误LNK2026 XXX模块对于 SAFESEH 映像是不安全的
项目属性->链接器->命令行将/SAFESEH:NO加入附加选项框中
  1. Debug和Release
/GL 为全程优化开关,带有/GL选项开关,生成时不产生调试信息,在配置属性->C/C++->优化->全程优化中设置
/ZL 为生为调试信息开关,两者不可同时使用,在配置属性->C/C++->常规->调试信息格式中设置
在实际使用过程中:
如编译debug版本, 则去掉GL选项(将全程优化中选为否)
如编译release版本,则可去掉ZI选项,重新生成即可


猜你喜欢

转载自blog.csdn.net/g1269420003/article/details/80609815