平时使用vs开发时,IDE都帮我们完成了编译的工作,确实很方便;但是有时候想写个很简单的程序都需要开启vs,实在是麻烦,所以就安装了MinGW,在windows上用gcc来编译程序。今天这个电脑只装了VC++,没有装MinGW,看看如何使用VC++的编译器来编译程序。


文章目录

  • 1. cl.exe使用说明
    • 1.1 设置环境变量
    • 1.2 编译器选项
    • 1.3 编译
  • 2. 使用32位编译器
  • tips
    • 在vscode中设置非unicode环境
  • 3. 使用cl查看类结构

1. cl.exe使用说明

1.1 设置环境变量

cl.exe使用环境设置:
在控制台使用cl.exe时需设置PATH、INCLUDE、LIB、LIBPATH等环境变量,比较复杂;所以我们直接用 “VS2015 x64 x86 兼容工具命令提示符” 打开控制台,里面已经设置好了各种的环境变量,可以直接用。

在cmd中执行以下命令设置环境变量(vs 2015 x86):

%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"" x86_amd64

或者之间找到vs的各个命令,然后复制到控制台即可:

如果想自己设置环境变量,可以看看VS命令提示符中是如何设置的,下面贴一个vcvarsx86_amd64.bat,看看是如何设置的环境变量:


@call :GetVSCommonToolsDir
@if "%VS120COMNTOOLS%"=="" goto error_no_VS120COMNTOOLSDIR@call "%VS120COMNTOOLS%VCVarsQueryRegistry.bat" 32bit 64bit@if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR
@if "%VCINSTALLDIR%"=="" goto error_no_VCINSTALLDIR
@if "%FrameworkDir32%"=="" goto error_no_FrameworkDIR32
@if "%FrameworkVersion32%"=="" goto error_no_FrameworkVer32
@if "%FrameworkDir64%"=="" goto error_no_FrameworkDIR64
@if "%FrameworkVersion64%"=="" goto error_no_FrameworkVer64
@if "%Framework40Version%"=="" goto error_no_Framework40Version@set FrameworkDir=%FrameworkDir32%
@set FrameworkVersion=%FrameworkVersion32%@if not "%WindowsSDK_ExecutablePath_x64%" == "" (@set "PATH=%WindowsSDK_ExecutablePath_x64%;%PATH%"
)@if not "%WindowsSdkDir%" == "" (@set "PATH=%WindowsSdkDir%bin\x86;%PATH%"@set "INCLUDE=%WindowsSdkDir%include\shared;%WindowsSdkDir%include\um;%WindowsSdkDir%include\winrt;%INCLUDE%"@set "LIB=%WindowsSdkDir%lib\winv6.3\um\x64;%LIB%"@set "LIBPATH=%WindowsSdkDir%References\CommonConfiguration\Neutral;%ExtensionSDKDir%\Microsoft.VCLibs\12.0\References\CommonConfiguration\neutral;%LIBPATH%"
)@rem
@rem Root of Visual Studio IDE installed files.
@rem
@set DevEnvDir=%VSINSTALLDIR%Common7\IDE\@rem PATH
@rem ----
@if exist "%VSINSTALLDIR%Team Tools\Performance Tools" (@set "PATH=%VSINSTALLDIR%Team Tools\Performance Tools;%PATH%"
)
@if exist "%ProgramFiles%\HTML Help Workshop" set PATH=%ProgramFiles%\HTML Help Workshop;%PATH%
@if exist "%ProgramFiles(x86)%\HTML Help Workshop" set PATH=%ProgramFiles(x86)%\HTML Help Workshop;%PATH%
@if exist "%VCINSTALLDIR%VCPackages" set PATH=%VCINSTALLDIR%VCPackages;%PATH%
@if exist "%FrameworkDir%%Framework40Version%" set PATH=%FrameworkDir%%Framework40Version%;%PATH%
@if exist "%FrameworkDir%%FrameworkVersion%" set PATH=%FrameworkDir%%FrameworkVersion%;%PATH%
@if exist "%VSINSTALLDIR%Common7\Tools" set PATH=%VSINSTALLDIR%Common7\Tools;%PATH%
@if exist "%VCINSTALLDIR%BIN" set PATH=%VCINSTALLDIR%BIN;%PATH%
@if exist "%VCINSTALLDIR%BIN\x86_amd64" set PATH=%VCINSTALLDIR%BIN\x86_amd64;%PATH%
@set PATH=%DevEnvDir%;%PATH%@rem Add path to MSBuild Binaries
@if exist "%ProgramFiles%\MSBuild\12.0\bin" set PATH=%ProgramFiles%\MSBuild\12.0\bin;%PATH%
@if exist "%ProgramFiles(x86)%\MSBuild\12.0\bin" set PATH=%ProgramFiles(x86)%\MSBuild\12.0\bin;%PATH%@if not "%FSHARPINSTALLDIR%" == "" (@set "PATH=%FSHARPINSTALLDIR%;%PATH%"
)@if exist "%DevEnvDir%CommonExtensions\Microsoft\TestWindow" (@set "PATH=%DevEnvDir%CommonExtensions\Microsoft\TestWindow;%PATH%"
)@rem INCLUDE
@rem -------
@if exist "%VCINSTALLDIR%ATLMFC\INCLUDE" set INCLUDE=%VCINSTALLDIR%ATLMFC\INCLUDE;%INCLUDE%
@if exist "%VCINSTALLDIR%INCLUDE" set INCLUDE=%VCINSTALLDIR%INCLUDE;%INCLUDE%@rem LIB
@rem ---
@if exist "%VCINSTALLDIR%ATLMFC\LIB\amd64" set LIB=%VCINSTALLDIR%ATLMFC\LIB\amd64;%LIB%
@if exist "%VCINSTALLDIR%LIB\amd64" set LIB=%VCINSTALLDIR%LIB\amd64;%LIB%@rem LIBPATH
@rem -------
@if exist "%VCINSTALLDIR%ATLMFC\LIB\amd64" set LIBPATH=%VCINSTALLDIR%ATLMFC\LIB\amd64;%LIBPATH%
@if exist "%VCINSTALLDIR%LIB\amd64" set LIBPATH=%VCINSTALLDIR%LIB\amd64;%LIBPATH%
@if exist "%FrameworkDir%%Framework40Version%" set LIBPATH=%FrameworkDir%%Framework40Version%;%LIBPATH%
@if exist "%FrameworkDir%%FrameworkVersion%" set LIBPATH=%FrameworkDir%%FrameworkVersion%;%LIBPATH%
@if exist "%FrameworkDir64%%Framework40Version%" set LIBPATH=%FrameworkDir64%%Framework40Version%;%LIBPATH%
@if exist "%FrameworkDir64%%FrameworkVersion64%" set LIBPATH=%FrameworkDir64%%FrameworkVersion64%;%LIBPATH%@set Platform=x64
@set CommandPromptType=Cross@goto end@REM -----------------------------------------------------------------------
:GetVSCommonToolsDir
@set VS120COMNTOOLS=
@call :GetVSCommonToolsDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper64  HKLM > nul 2>&1
@if errorlevel 1 call :GetVSCommonToolsDirHelper64  HKCU > nul 2>&1
@exit /B 0:GetVSCommonToolsDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "12.0"') DO (@if "%%i"=="12.0" (@SET "VS120COMNTOOLS=%%k")
)
@if "%VS120COMNTOOLS%"=="" exit /B 1
@SET "VS120COMNTOOLS=%VS120COMNTOOLS%Common7\Tools\"
@exit /B 0:GetVSCommonToolsDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" /v "12.0"') DO (@if "%%i"=="12.0" (@SET "VS120COMNTOOLS=%%k")
)
@if "%VS120COMNTOOLS%"=="" exit /B 1
@SET "VS120COMNTOOLS=%VS120COMNTOOLS%Common7\Tools\"
@exit /B 0@REM -----------------------------------------------------------------------
:error_no_VS120COMNTOOLSDIR
@echo ERROR: Cannot determine the location of the VS Common Tools folder.
@goto end:error_no_VSINSTALLDIR
@echo ERROR: Cannot determine the location of the VS installation.
@goto end:error_no_VCINSTALLDIR
@echo ERROR: Cannot determine the location of the VC installation.
@goto end:error_no_FrameworkDIR32
@echo ERROR: Cannot determine the location of the .NET Framework 32bit installation.
@goto end:error_no_FrameworkVer32
@echo ERROR: Cannot determine the version of the .NET Framework 32bit installation.
@goto end:error_no_FrameworkDIR64
@echo ERROR: Cannot determine the location of the .NET Framework 64bit installation.
@goto end:error_no_FrameworkVer64
@echo ERROR: Cannot determine the version of the .NET Framework 64bit installation.
@goto end:error_no_Framework40Version
@echo ERROR: Cannot determine the .NET Framework 4.0 version.
@goto end:end

1.2 编译器选项

cl.exe是Microsoft C/C++编译器。常用的几个指令需要记一下

/EHsc 启用异常处理
/D 增添宏定义
/D NDEBUG

1.3 编译

cl /EHsc main.cpp

编译多个文件:

cl /EHsc file1.cpp file2.cpp file3.cpp

2. 使用32位编译器

"c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64_x86\vcvarsamd64_x86.bat"

tips

在vscode中设置非unicode环境

在用vscode写c++代码时,默认是unicode编码,非常不喜欢,所有都要加上L,需要将全局define中的“UNICODE”和“_UNICODE”移除,步骤如下:

  1. 使用快捷键 shift+ctrl+p打开Command Palette(命令调色板?)
  2. 选择C/Cpp: Edit configurations(C/Cpp: 编辑配置),没有就输入,会自动搜索
  3. 在.vscode文件夹下会创建一个c_cpp_properties.json文件
  4. 删除c_cpp_properties.json文件中configurations.defines下的“UNICODE”和“_UNICODE”

结果如下:

3. 使用cl查看类结构

查看方式:

# cl /d1 reportSingleClassLayout[ClassName] [FileName.cpp]

例如:

// test.cpp
class A
{public:int a;int b;
}

查看A的类结构:

cl /d1 reportSingleClassLayoutA test.cpp

此功能可以方便的查看类的虚表结构。


参考:

  • Walkthrough: Compiling a Native C++ Program on the Command Line
  • C/C++ for Visual Studio Code (Preview)

vc++编译工具(cl.exe)使用相关推荐

  1. 【网络通信】简易MFC程序的创建与命令行工具cl.exe、linker.exe的使用

    简易MFC程序的创建与命令行工具cl.exe.linker.exe的使用 实验目标 实验流程 一.MFC程序 1.创建MFC项目 2.资源与代码 3.演示效果 二.编译连接windows API程序 ...

  2. error: command ‘D:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\cl.exe‘ f

    跟着知乎"略略略"大佬改建YOLOv5的旋转目标检测项目. 在python项目中使用C++文件,首先安装了swig,将polyiou.i文件编译生成了polyiou.cpp文件,然 ...

  3. Java反编译工具JD-GUI.exe

    Java反编译工具JD-GUI.exe 以下是反编译工具下载地址 链接:https://pan.baidu.com/s/1pMe1trX 密码:pmke 一.运行JD-GUI.exe文件 二.将Jav ...

  4. VC中的cl.exe

    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin>cl.exe 用于 x86 的 Microsoft (R) C/C++ 优化 ...

  5. 微软自带的防反编译工具dotfuscator.exe的使用

    在园子里已经有很多高手写了关于MS的dotfuscator.exe使用方法.并且做了深入的剖析.自己对这个东西没有深入的理解,只是使用了一下而已      1.安装完vs之后在,在安装路径*:\Pro ...

  6. 解决VC++ Error spawning cl.exe 问题·

    打开运行,输入Msdev /useenv运行(注意啦/前面有个空格).它会强制使系统环境变量全高设置成正确值.而且,只需要使用一次这样的方式运行VC,以后再次通过双击图标的方式启动也不会有问题 转载于 ...

  7. Eclipse反编译工具Jad.exe及插件JadClipse配置

    1.下载所需文件 JadClipse,http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download Jad,http://www ...

  8. python windows 解决 cl.exe 的问题

    error: command 'C:\\Users\\user\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\ ...

  9. pip安装第三方库(mysqlclient)失败,cl.exe错误;pip安装库的过程

    这里写自定义目录标题 pip安装mysqlclient失败解决方法 解决方法 报错原因以及pip安装库的过程 pip安装mysqlclient失败解决方法 安装mysqlclient或者某些第三方库的 ...

最新文章

  1. 牛客 - 街机争霸(bfs)
  2. Lucene6.0 创建索引及查询text简单实例
  3. html jQuery/bootstrap通过网络bootcdn导入连接
  4. 作者:王倩(1983-),女,上海计算机软件技术开发中心工程师。
  5. 解决DesignMode不能正确反应是否处于设计模式的问题
  6. windows7下bcdedit出现“拒绝访问”解决办法
  7. 小程序已成BAT争锋新战场
  8. 下一个互联网平台还有多远?
  9. 24小时学通LINUX内核系列
  10. C/C++——C++中new与malloc的10点区别
  11. 转:知识管理概念综述(一)
  12. 金融发展在经济结构调整中的重要作用
  13. 兽药促销发展分析及新策略谈
  14. Scala学习笔记01
  15. h3c交换机配置nat_史上最详细H3C路由器NAT典型配置案例
  16. Mini CFA 考试练习题 Ethics and Investment Professionalism
  17. Ubuntu18.04安装灭霸SLAM:ORBSLAM3
  18. 210_Python+OpenCV_04_模糊(均值、中值、高斯)
  19. html有序列表设置混合编码,一组你值得拥有的 Markdown 中混用 HTML 案例
  20. python绘制散点图运行结果是_用python绘制散点图

热门文章

  1. 爬虫、无线网络、缓存、IPv6、即时通信、流媒体
  2. 5G发展商业化进程明显加快 联通混改或将加速5G变局
  3. mysql数据库建模方式_SQL Server中的四类数据库建模的方法介绍
  4. ai绘画图片素材有哪些软件?安利三个软件
  5. TXT是什么格式的文件?txt文件误删如何恢复?
  6. python实现李洵同款动态爱心
  7. 在apple developer APP上注册显示您的注册已被暂停解决办法
  8. ajp协议服务器端如何配置,详解Tomcat HTTP协议与AJP协议
  9. [导航教程] [C#基类库大全]官方产品发布与源码下载---苏飞版
  10. Tensorflow的Win10、CPU版本安装