AI时代还C不C?我来助你,Windows搭建C/C++环境MSVC,别装坑爹的Visual Studio IDE10多G

ElonMusk.do 2024-11-26 06:45 1

就拿网络指纹技术来说,学C至少了解其核心库的运行机制是很重要的,可高度自定义TLS握手,不然CF盾都过不了,反代ChatGPT就更加做不到


虽然最轻松跑C环境是在Linux或者WSL上,但有时难免有需求得在windows跑,此时若链接编译些复杂项目,不搭好MSVC环境,单纯用MinGW/Clang还是会有跑不动的情况.关于MSVC环境搭建,网上有些教程可能不够全面或过时,我来做个比较新的补充


为何不用Visual Studio?看个人喜好,用惯了VSCODE不喜欢用别的IDE,想用就用不拦着.这个方法给不想用它的人,喜欢从轻量化开始,减少不可控量,用自己最熟悉的IDE效率是最高的




往下找到"所有下载",关键字"工具", Visual Studio 生成工具



VS包管理工具



首页不勾选,点"单个组件",分别搜索MSVC和Windows 11 SDK,选择最新版本,这样就可以做到最小化安装.



  • MSVC提供编译器 cl.exe link.exe等基础构建工具

  • Windows 11 SDK提供系统头文件和库,向后兼容 Windows 10


可能需要手动添加环境变量,主要是这两个目录下的bin lib include:


C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC

C:\Program Files (x86)\Windows Kits\10


# 默认目录结构都是一样的,最简单的方式,版本一样直接用,版本不同就粘到你编辑器,用你的版本号替换这里的版本号
# Path 编辑添加
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64
# 新建 LIB
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.42.34433\lib\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\ucrt\x64;
# 新建 INCLUDE
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.42.34433\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\winrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\cppwinrt



简单介绍添加的这几个库用途




  • um(User-Mode) : 包含了适用于Windows 用户模式开发的头文件和库




  • ucrt(Universal C Runtime) : Windows 平台的通用C运行时库,提供标准C函数(如 printf、malloc)和其他核心功能




  • shared : 提供 Windows 头文件和库的共享部分,是许多其他 SDK 组件的基础, 包括常见的 Windows API 头文件(如 windows.h)和一些底层支持库




  • WinRT : 提供 Windows 运行时支持,用于访问现代Windows API(如 UWP 和 WinRT 组件)




  • CppWinRT : 提供高效、类型安全的C++ API,通常用于 UWP 和 WinRT 应用开发




现在配置好了,刷新环境变量,检查确认cl可用,可正常导入各种头文件


附vscode使用cl的配置.vscode/tasks.json:


{
"version": "2.0.0",
"tasks": [
{
"label": "Build and Run", // 任务名称
"type": "shell",
"command": "cl", // 调用 MSVC 编译器
"args": [
"/EHsc", // 启用 C++ 异常处理
"/Fe${fileDirname}\\${fileBasenameNoExtension}.exe", // 生成的可执行文件路径
"${file}" // 编译当前打开的文件
],
"group": {
"kind": "build",
"isDefault": true // 将此任务设置为默认任务
},
"problemMatcher": ["$msCompile"], // 配置问题匹配器以捕获编译错误
"detail": "Build and run a single C or C++ file with cl"
}
]
}


.vscode/launch.json:


{
"version": "0.2.0",
"configurations": [
{
"name": "Build and Run C/C++", // 调试任务名称
"type": "cppvsdbg", // 使用 MSVC 调试器
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe", // 指定可执行文件路径
"args": [], // 如果需要,可以添加运行时参数
"stopAtEntry": false, // 是否在入口处暂停
"cwd": "${fileDirname}", // 设置当前工作目录
"console": "integratedTerminal", // 使用集成终端运行
"preLaunchTask": "Build and Run" // 运行前执行的任务
}
]
}

按F5 编译并运行



在Windows上最好MSVC MinGW LLVM三个都装,以应对一些复杂的项目依赖情况,做好指定不会冲突


其它CMake构建工具 NASM汇编器 使用choco一起安装即可


choco install -y mingw llvm cmake nasm

还不了解的看这里



很多人想从HelloWorld开始学习C,但电脑是windows系统,就需要额外安装C的windows环境.
我们现在的目标就是最快速度完成HelloWorld,代码很简单:
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}

但环境安装过程可能难倒很多人,"错误"的复杂示例(也给上链接,都…
最新回复 (16)
  • darkstarrd 11-26 07:55
    1

    谢谢楼主分享,vsc+mingw各种问题真是头疼死了

  • 御姐流香 11-26 07:56
    2

    感谢大佬分享!

  • heliang614 11-26 07:56
    3

    这是真正的高手,谢谢大佬

  • laikey.lau 11-26 07:57
    4

    谢谢大佬分享

  • 看今朝 11-26 08:32
    5

    佬友的分享很实用

  • 大帅哥 11-26 08:51
    6

    还以为是那个C

  • SUMN 11-26 09:55
    7

    感谢佬友分享

  • ElonMusk.do 楼主 11-26 18:34
    8

    C, #CPP添加

  • ElonMusk.do 楼主 11-26 18:36
    9

    纯水, #职场添加CPP, OpenAI, #网络安全移除

  • 小黄 11-27 01:47
    10

    感觉很有用!但是下载凌晨了,有空了按佬友的试试

  • 我不是娜美 11-27 01:50
    11

    #快问快答移除

  • HsiangSun 11-27 02:32
    12

    来学Rust

  • 张麻子 11-27 02:37
    13

    这是真正的高手,谢谢大佬



    这是真正的高手,谢谢大佬

  • Pokeman 11-27 02:47
    14

    我是在用visual studio 2022,主要是mfc,msvcrt

  • Leo 11-27 09:10
    15

    感谢分享大佬厉害啊Thanks for sharing Biggie is awesome!

  • An Ning Ui 07-25 11:49
    16

    我主要用mingw,当时要编译msvc的时候就编写一个全局脚本msenv.cmd清理当前mingw环境再启动vcvars64.bat就可以了进入msvc环境了

* 帖子来源Linux.do
返回