Visual Studio 2013 编译 c/c++ 问题汇总

使用微软的 visual studio 2013 编译 c/c++ 项目时,出现一些难以排查的问题,现进行总结,避免再走弯路。

  • 环境说明

    操作系统:windows7 x64
    集成环境:visual studio 2013
    编译目标:windows 32/64 位控制台程序、静态链接库lib、动态链接库dll
  • Solution 配置页面与当前使用的 Solution 配置不一致

    解决方案项目 名称上点右键,选择 属性 后,如图所示:
    p1
    在配置页面修改的配置不一定是当前使用的配置,造成配置未生效的错觉。
  • 未正确配置 windows sdk 的 include 路径

    当源代码使用 操作系统 相关的头文件时,提示找不到,如 windows.h。需手动配置包含目录

配置属性-VC++目录-包含目录配置属性-c/c++-附加包含目录

  • 未正确配置 windows sdk 的库目录

    当编译 exe 文件或 dll 文件时,提示找不到 *.lib 文件,如 kernel32.lib。需手动配置库目录

配置属性-VC++目录-库目录配置属性-链接器-附加库目录

  • 未正确配置可执行文件目录

    编译过程中,集成环境调用一系列可执行文件,提示无法运行 *.exe,如图所示
    p2
    查找该可执行文件的路径,在 配置属性-VC++目录-可执行文件目录 中添加该路径,或者在 windows 系统中修改 PATH 环境变量,如图所示
    p3
  • 可执行文件平台与编译目标平台不一致

    编译过程中,集成环境调用一系列可执行文件,提示无法运行 *.exe,而设置可执行文件路径后,仍报同样错误。
    以 rc.exe 为例,该文件存在 3 个不同平台版本,如图所示
    p4
    按照正常思维逻辑,编译 64 位目标应选择 x64 版本的 rc.exe,但仍提示无法运行 *.exe,而选择 x86 版本的 rc.exe,则编译通过。
  • 写在最后

    关于最后一个问题,有网友提到通过修改 project 的配置文件可阻止集成环境调用 rc.exe,经测试,并非百分百可行。
    在 windows10 x64,visual studio 2017 环境下,上述问题均未出现。
    vs2013 的默认环境配置存在一定瑕疵,若使用该版本的集成环境编译c/c++源代码,需格外小心。若条件允许,还是使用 vs2017 。