【01】一步一步命令行输出VC hello world

安装VS2022

VS2022的安装程序下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/ 。下载完成之后点击程序会进入到选择安装VS2022组件的安装程序,选择你需要的安装组件就好,如果只需要C++的程序就仅安装C++就好了。 这样会轻便很多。
我安装好的目录结构如下图:
目录结构

编写hello world程序

编写一个最简单的C++ hello word程序.

#include <iostream>
using namespace std;
int main()
{
  std::cout<< "hello world " << endl;
  return 0;
}

配置cl.exe

VC++的编译程序为cl.exe
以我本机安装的VS2022目录为例,编译程序在目录D:\dev\vs2022\ide\VC\Tools\MSVC\14.31.31103\bin下.
cl.exe的目录
在该目录上还有针对主机64位X86的两个文件夹目录。比如我的是64位的。那我选Hostx64,然后进入目录又有要编译后的程序是选64还是X86的两个目录,如果要编译64位的程序,选择x64文件夹就好了。 这样最终到达了cl.exe所在的目录.

cl.exe目录为了方便后续使用命令, 将改路径配置到环境变量Path路径中。
cl.exe环境变量
现在新开一个命令窗口cmd.exe。可以直接运行cl.exe了。
命令行运行cl.exe

编译helloworld.cpp

进入到helloworld.cpp文件目录. 然后在命令行直接编译该文件

cl.exe -GX helloworld.cpp

直接编译报错
以上操作不错意外的报错了。 看报错原因是找不到iostream这个头文件。头文件的目录在哪里啦?应该也会在这个VS2022的目录中, 以我本地的环境为例。目录在D:\dev\vs2022\ide\VC\Tools\MSVC\14.31.31103\include.这里存在很多需要的头文件。 接下将这个目录配置到INCLUDE环境变量中。
INCLUDE环境变量
重新启动cmd.exe编译(一定要重开cmd,要不然不会重新加载系统的环境变量.
重新编译
重新编译已经不再报找不到头文件iostream啦, 但是依然找不到必须的头文件“crtdbg.h” 。看来crtdbg.h不在刚才的目录下。crtdbg.h一般会在以个WIndows Kits的目录下. 我本地环境中可以找到在目录D:\Windows Kits\10\Include\10.0.20348.0\ucrt中.ucrt目录
这里面也很多头文件, 那也把这个目录配置到INCLUDE环境变量中。
再试编译。
编译内容见上,已经不再报找不到头文件了。 但是报无法做链接操作了,因为找不到静态库libcpmt.lib
在前面的MSVC目录下已经能主要到一个libD:\dev\vs2022\ide\VC\Tools\MSVC\14.31.31103.在目录lib下也有两个针对不同平台的目录x86x64
把该目录配置到系统环境变量LIB中。
LIB环境变量
再次编译。

再次编译,报错找不到kernel32.lib
再次编译,报错找不到kernel32.lib了。我本机也在D:\Windows Kits\10\Lib\10.0.20348.0\um\x64下。
kernel32.lib目录
把目录D:\Windows Kits\10\Lib\10.0.20348.0\um\x64也配置到系统环境变量LIB中。
LIB环境变量
配置完成之后再进行编译操作.
找不到libucrt.lib
根据以上配置的经验,应该也能推测出在Windows Kits下能找到了。继续追加系统环境变量LIB

配置ucrt目录
再次尝试编译是否能通过.
编译通过
通过上面不断的修正错误,已经可以完全通过了。程序已经成功输出了helloworld.exe

helloworld.exe成功输出

总结

VC编译使用的是cl.exe(当然中间还有一些编译链接的过程,直接被包装进去了)。 在编译过程中主要牵扯到了头文件静态链接库.他们使用的环境变量分别为INLUDELIB。如果编译相应报错就尝试修改追加该参数的值就能解决响应的问题。罗里吧嗦,主要是为了抛砖引玉,更能在青铜选手上解决该问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值