使用微软的 visual studio 2013 编译 c/c++ 项目时,出现一些难以排查的问题,现进行总结,避免再走弯路。
环境说明
操作系统:windows7 x64
集成环境:visual studio 2013
编译目标:windows 32/64 位控制台程序、静态链接库lib、动态链接库dllSolution 配置页面与当前使用的 Solution 配置不一致
在 解决方案 或 项目 名称上点右键,选择 属性 后,如图所示:
在配置页面修改的配置不一定是当前使用的配置,造成配置未生效的错觉。未正确配置 windows sdk 的 include 路径
当源代码使用 操作系统 相关的头文件时,提示找不到,如 windows.h。需手动配置包含目录
配置属性-VC++目录-包含目录 或 配置属性-c/c++-附加包含目录
配置属性-VC++目录-库目录 或 配置属性-链接器-附加库目录
未正确配置可执行文件目录
编译过程中,集成环境调用一系列可执行文件,提示无法运行 *.exe,如图所示
查找该可执行文件的路径,在 配置属性-VC++目录-可执行文件目录 中添加该路径,或者在 windows 系统中修改 PATH 环境变量,如图所示可执行文件平台与编译目标平台不一致
编译过程中,集成环境调用一系列可执行文件,提示无法运行 *.exe,而设置可执行文件路径后,仍报同样错误。
以 rc.exe 为例,该文件存在 3 个不同平台版本,如图所示
按照正常思维逻辑,编译 64 位目标应选择 x64 版本的 rc.exe,但仍提示无法运行 *.exe,而选择 x86 版本的 rc.exe,则编译通过。写在最后
关于最后一个问题,有网友提到通过修改 project 的配置文件可阻止集成环境调用 rc.exe,经测试,并非百分百可行。
在 windows10 x64,visual studio 2017 环境下,上述问题均未出现。
vs2013 的默认环境配置存在一定瑕疵,若使用该版本的集成环境编译c/c++源代码,需格外小心。若条件允许,还是使用 vs2017 。