文章目录
编译并运行第一个C++程序
C++ Primer一开始就给了我一个下马威。
第一章第一节的练习是编译并运行一个main程序,程序内容非常简短,只有几行,内容如下:
int main()
{
return 0;
}
甚至不是“Hello World”程序,但是它需要使用编译器进行编译,虽然使用VS创建一个控制台程序很简单,但这毕竟不是一切的开始,于是我开始了折腾。
伊始的第一章
这一章的内容一共六节,从编写一个简单的程序开始,到输入输出、注释简介、控制流、类简单,最后一章应该是一个相对完整的小程序——书店程序,看着个目录,让我不由得想起了这个段子 :
其实1.1节并不长,重点讲了一下函数(function)的基本格式,这个凡是稍写过一点代码的应该都明白,不需要细说,然后重点来了:使用命令行编译一个C++程序。
编译遇到了一系列问题
首先是第一个程序的内容,依书上所写,一个字符都不动:包括文件名,叫prog1.cc,记事本写完,扔在桌面。
C++ Primer里说,VS编译器的命令为cl,那么首先在这里要说的是,WIN10有两个命令行工具——一个是Windows Power Shell,另一个是使用过多年的CMD,在实际使用中,两者并没有太大区别,不过Power Shell功能更多更强大一些。
那么我们随意打开一个,这里使用CMD。
1. 练习题 1.1 - 找不到cl指令
输入指令:
cl /EHsc prog1.cpp
输入的时候我就知道,事情肯定不会这么简单,果然标准结局来了:
当然了,这难不倒我,这肯定是找不到cl.exe呗, 身经百战的我怎么会被这打倒,按照惯例,两个方法:一是打开cl.exe所在的文件夹,二是配置环境变量,为了一劳永逸,当然是要配置环境变量了。
于是打开VS2017安装目录,搜索cl.exe
,找到了四个文件,前面目录都一样C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\
,区别只在于之后是\Hostx64\x86
、\Hostx64\x64
、\Hostx86\x64
、\Hostx86\x86
,当然选择了\Hostx64\x64
。
配置完成,输入cl
,搞定。
2. 无法打开各种库
好了,继续编译,输入指令:cl /EHsc prog1.cc
???
好嘛,找不到库,那还是老套路,继续配置环境变量,搜索LIBCMT.lib,添加环境变量,由于是调用库,所以环境变量的key要使用lib。
然而事情还是出乎了我的意料之外,CMD竟然又报了这个:
LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”
那继续,还是一样的方法,配置环境变量。
嗯没错,配置完成kernel32.lib,还有第三个Lib。
LINK : fatal error LNK1104: 无法打开文件“libucrt.lib”
当然了,一样的套路,继续。
OK,一切搞定。
3. 获取输入值
我前面有说到,Windows中有两个自带的命令行工具,C++ Primer里说使用%ERRORLEVEL%
来获取返回值,要注意:这只能在CMD里使用,在PowerShell中要使用$LASTEXITCODE
来获取。
4. 练习题 1.2 - 改写程序,返回-1
到了这一步,其实需要解决的问题都已经解决了,非常顺利:
结束1.1
其实问题并不难,这都是以前在折腾java环境的时候使用过的套路,就是繁琐了一些。
好了,下一章。