原文出处:http://blog.csdn.net/chy555chy/article/details/52129501

##############################################################################

参考 http://blog.sina.com.cn/s/blog_7741c2f70101io0s.html 
第一次用Markdown编辑器写博客,以前都是用Html编辑器写的。这次尝试一下Markdown,感觉效果不错,格式化代码的方式也很简洁。

由于在Linux上可以使用命令行,通过gcc命令编译C/C++程序。因此就想是否在windows上也可以通过命令行来编译C/C++程序。 
      网上有说,在windows下安装一个cygwin,然后就可以用gcc命令编译了,可是这样太麻烦了。然后我想VC6.0和Vistual Studio不是也可以编译C/C++文件的吗?虽然它们是图形化界面的方式,可是背后也一定是用命令行方式编译的。

当前环境 Win10 x64 & Vistual Studio 2015

首先,在桌面(我的目录是C:\Users\Administrator\Desktop\test.cpp)上新建一个文本文件,改名为test.cpp。test.cpp的内容如下:

#include <iostream>
using namespace std;
int main()
{cout<<"hello world!"<<endl;return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我机子上安装的VS2015,vs2015的VC的bin目录下有个cl.exe就是负责编译C/C++程序的,位置如下:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
  • 1

VC的include目录如下:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
  • 1

VC的lib目录如下:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib
  • 1

直接在CMD下键入以下命令

set path=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
set include=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include
set lib=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib
  • 1
  • 2
  • 3

这些设置仅在该CMD环境下有效,它并不会永久改变系统环境变量,只是临时改变而已。所以并不用太担心。

通过set命令可以查看当前配置的环境变量,如下: 

进入test.cpp的目录,并运行 “cl test.cpp” 命令,报错:fatal error C: 无法打开包括文件: “corecrt.h”: No such file or directory 

参考这篇博客http://blog.csdn.net/x356982611/article/details/51140807 
进入C:\Program Files (x86)\Windows Kits\10\Include目录 

我这里是找到其中最新版的点进去,进入到C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt目录,corecrt.h文件如下: 

修改环境变量,添加ucrt目录

set include=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt
  • 1

再次执行 “cl test.cpp” 命令,结果还是出错:LINK: fatal error LNK1104: 无法打开文件“uuid.lib” 

参考这篇博客http://www.cnblogs.com/CHN-William/archive/2012/12/27/2835578.html,进入到C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib目录,果然发现Uuid.Lib 

修改环境变量,添加该目录

set lib=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib
  • 1

再次执行 “cl test.cpp” 命令,结果还是出错:LINK: fatal error LNK1104: 无法打开文件 “libucrt.lib” 

进入C:\Program Files (x86)\Windows Kits\10\Lib目录 
 
找最新版的文件夹,进入C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x64目录,发现“libucrt.lib”文件 
 
这里说明一下,有d后缀的lib文件是Debug版本的,没有的是Release版本的,最明显的区别就是Release版的删除了Debug版本中诸如断点等调试信息,并且进行了代码优化,因此通常Release版本的都会比Debug版本的文件小。

修改环境变量,添加该目录

set lib=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x64
  • 1

再次执行 “cl test.cpp” 命令,依然报错:libucrt.lib(exp21.obj) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“x86”冲突 

但是扯淡的是为这里就是64位的Win10啊,当初是64位的Win7,用腾讯Win10装机助手升上去的。 

修改环境变量,改为x86

set lib=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x86
  • 1

执行成功,/out:test.exe test.obj 

在输出目录下就生成了相应的 .obj 和 .exe 文件了。 
 
执行test.exe,可以在CMD中看到相应的输出 

经过这一次的反复百度,我得出一个经验:网上的博文大多都是Out,而且大家都是复制粘贴还写自己原创,所以一堆一样的资料,而且是不能运行的。所以以后看到网上的资料,一定要亲自试一下,并标注当时的环境才可信。

###########################################################

cl编译时出现的warning:warning c4530:使用了C++异常处理程序,但未启用展开语义
加入参数/EHsc,这样可以缩小捕获范围,从而是没必要的异常的消失。如:cl /EHsc hello.cpp就可以去除warining。

windows利用DOS窗口编译C++文件相关推荐

  1. windows系统DOS窗口

    1.打开DOS窗口 windows+r,然后就输入cmd 右键开始,点击运行,然后输入cmd 2.DOS常用命令 E:+回车键      切换盘符 dir+回车键        展示盘符下所有的文件和 ...

  2. 在windows上使用go编译dll文件,供C++调用

    C++项目是win32的,所以go的编译环境也要改成win32的 cmd下,修改环境变量: set GOARCH=386 set CGO_ENABLED=1 使用go env 查看是否生效 参考:ht ...

  3. Windows文件目录DOS窗口

    快捷操作 打开指定目录DOS窗口 目录地址中,输入命令Cmd 回车,打开指定路径的DOS窗口 打开路径

  4. Windows下DOS窗口修改编码

    win+R 调出dos窗口,在窗口上右键属性,可以看到默认编码是GBK 修改默认编码方法:输入chcp 65001,如下图 输入:chcp 65001 回车,即可临时修改编码方式. 说明:65001 ...

  5. Windows使用dos窗口打开应用

    1.在环境变量中添加该应用的安装位置.注意,两个变量之间有英文的分号; 2.在安装目录下,将该应用的应用程序复制一个并重命名为你想要的快捷方式.如打开微信的安装位置,复制WeChat.exe并重命名新 ...

  6. 【windows】dos命令查看某个文件夹下所有文件目录列表

    dos命令  dir展示一个目录中的文件夹和文件列表  /a代表显示隐藏目录 转载于:https://www.cnblogs.com/sxdcgaq8080/p/8949467.html

  7. windows自带反编译chm文件

    cmd命令即可实现chm文件反编译 hh.exe -decompile e:\ttt e:\haha.chm 转载于:https://www.cnblogs.com/hcpzhe/p/3387447. ...

  8. VS Code利用CMake工具编译Cpp文件报错

    VSCode 结合CMake个mingw编译Cpp项目 参考:1 配置C++和基础 报错时工具版本 Cmake工具版本为3.18.0免安装ZIP版本 mingw为8.1.0免安装ZIP版本 Path环 ...

  9. windows下dos窗口实现持续ping显示时间保存至日志

    效果图 右击新建 ping.bat 文件(ping为文件名称,随便起),内容如下: cscript ping.vbs 127.0.0.1 -t >log.txt 127.0.0.1 修改为你自己 ...

最新文章

  1. LeetCode 973. K Closest Points to Origin--TopK 问题--最小堆--C++,Python解法
  2. python实现简易版成绩管理系统_Python 实现简易版成绩管理系统!
  3. ajax判断用户名是否已经存在
  4. 网友写的ELK安装步骤
  5. C#中Monitor和Lock的用法区别
  6. Hibernate学习笔记③
  7. Android连接相机WiFi,安卓手机使用佳能相机机身wifi传输拍摄的操作
  8. Express框架简介、express使用模块引擎、模式数据
  9. HDOJ 1753 明朝A+B
  10. bond4 交换机配置_Linux--多网卡的7种Bond模式和交换机配置
  11. 运维成长日记:我是如何走上IT运维这条不归路的
  12. 《机器学习》周志华,勘误修订(带公式显示)
  13. wex5bex5 ---- (一)
  14. c语言第五章函数课后答案,C语言程序设计(第2版) 刘克威,张凌晓著 习题答案-第五章...
  15. C语言-初识C语言(4)
  16. 桌面计算机最小化,最小化我的电脑窗口打开总是最小化,如何把它 – 手机爱问...
  17. 测试工程师必备测试常识
  18. PS学习之小猪佩奇身上纹,掌声送给社会人
  19. 用Python写一个双人对战足球小游戏,堪比国足的技术【附带源码】
  20. win10 桌面的的文件都不见了 提示不注销保存都文件都为临时_无网也能传文件?!Win10 自带的“就近共享”功能这么腻害你知道吗?...

热门文章

  1. 关于内容管理系统IWMS的几个问题
  2. CLR探索系列:托管PE/COFF文件格式侧窥
  3. php代码自定义字段,[原创]栏目自定义字段调用教程及代码
  4. mysql 5.6.23 免安装_MYSQL 免安装版的环境配置
  5. bootstrap checkbox_[推荐]icheck-bootstrap(漂亮的ckeckbox/radiobox)
  6. 一个服务器启动2套mysql_一个服务器启动两个mysql实例
  7. java反编译工具_移动app安全测试 - 客户端 - 反编译保护
  8. 原生mysql启动_单实例MySQL的启动和关闭的方法
  9. 开发是在什么部门办理_房产证办理流程是什么?办理房产证需要缴纳哪些费用?...
  10. 微服务乱码_本地正常服务器乱码