《C++ Primer》

要运行一个最简单的C++程序,按照书上的代码写完

int main()

{

  reutrn 0;

}

保存为test1.cc

根据书上命令, windows下用cl.exe进行编译,那个l是小写的L,应该是compile + link的意思,当年学C的时候,这两个命令是分开的。

本书作者给出的Windows下的C++编译器是VS2010的。

首先要确保已经安装的C++的开发环境,我安装的是VS2017版的C++。

cl.exe在D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64

为了方便调用,可以把这个路径加入到系统环境变量path。

打开CMD,进入我写的代码目录,执行cl test1.cc,分多次报以下错误:

LINK : fatal error LNK1104: 无法打开文件“LIBCMT.lib”
LINK : fatal error LNK1104: 无法打开文件“oldnames.lib”
LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”
LINK : fatal error LNK1104: 无法打开文件“libvcruntime.lib”
LINK : fatal error LNK1104: 无法打开文件“libucrt.lib”
LINK : fatal error LNK1104: 无法打开文件“Uuid.lib”

网上找到的都是以VS项目为基础的设置。

我还没有在VS中建立项目,只是调用一下编译器,此路不通。

其实和C一样,只要把这些文件复制到代码目录就可以了。

D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64\oldnames.lib
D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64\libcmt.lib
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64\kernel32.lib
D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64\libvcruntime.lib
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64\libucrt.lib
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64\Uuid.Lib

说来也奇怪,把这些路径加入到Path中,并没有效果,依然是找不到,看来编译器并没有读取path设置

复制到我的程序所在目录以后,编译就通过了。但此时的目录大小已达到71m

 

 

堂堂C++程序,不到1k,环境需要71M,有点搞笑了,目前还不知道是哪里的问题。

 

约半小时以后

现在知道问题出在哪里了。

问题出在,设置环境变量的时候,不能把那些路径加到path中去,而是要增加一个单独命名的变量,叫Lib,只能这三个字母,其它名字不行,大小写不敏感。

这样加了以后,就不必把那些文件复制到代码目录下了。

据我分析,如果用VS编译,这些动作会由VS自动完成,现在我用命令行,所以只能由我手动完成。留下一个悬念,以后用VS编译项目的时候,做一个测试进行验证。

 

posted @ 2021-01-09 12:12  火军刀  阅读(671)  评论(0编辑  收藏  举报