新闻详情

新闻详情

首页 / 资讯中心 / 详情

Windows 11 下 WSL2 搭建 PX4 无人机仿真与多机协同

发布时间:2026/9/29 1:11:03来源:尧图网络
Windows 11 下 WSL2 搭建 PX4 无人机仿真与多机协同
1. 为什么 Windows 11 上用 WSL2 而不是双系统跑 PX4 仿真两年前我第一次搭 PX4 仿真环境选的是双系统。每次要飞仿真就得重启到 Ubuntu写完代码切回 Windows来回折腾至少五分钟。后来换成 Windows 11 WSL2 这套方案流程变成打开终端输入wsl三秒钟进 Ubuntu 环境Gazebo 里的无人机照样飞QGroundControl 照样连ROS 2 节点照常跑。这个改变直接让我把 WSL2 从“可以试试”变成了“强烈推荐”。1.1 一套环境解决三件麻烦事WSL2 并不是一个“虚拟机”那么简单。它底层基于 Hyper-V 的轻量级虚拟机但微软把文件系统、端口转发、本地回环网络都做了整合。对搞无人机开发的人来说意义不是“能在 Windows 下用 Linux”而是同时保住三样东西保留 Windows 侧的应用生态编译大文件、跑 IDE、用浏览器查资料都在原生 Windows 下做不会因为装了 Linux 而牺牲日常使用体验。获得接近原生 Linux 的仿真能力PX4 的 SITLSoftware In The Loop、Gazebo、ROS 2 这些项目官方支持的是 UbuntuWSL2 走的是完整 Linux 内核绝大部分工具链可以直接跑。开箱即用的图形界面WSL2 自带 WSLgUbuntu 里的 GUI 程序会直接显示在 Windows 桌面上不用额外装 X ServerQGroundControl 和 Gazebo 都能正常渲染。我之前用 VMware 跑 Ubuntu 也踩过不少坑特别是 Gazebo 的 OpenGL 渲染VMware 默认的 3D 加速经常导致屏幕闪烁、黑屏要折腾一大轮图形驱动。WSL2 在这方面反而省心很多Windows 侧的 GPU 驱动会被透传进 WSL2Gazebo 能用上 GPU 渲染这对仿真性能影响非常大。1.2 WSL2 的边界条件你得先知道不过 WSL2 不是万能的有几个边界条件必须提前了解否则后面会怀疑人生。第一跨文件系统访问慢。这是 WSL2 最典型的坑。如果你把 PX4-Autopilot 仓库克隆到 Windows 的 D 盘然后跑到 WSL2 里编译你会发现编译速度慢到离谱因为 WSL2 访问/mnt/d/...走的是一层 9P 协议IO 性能跟本地 ext4 差一个数量级。所以项目源码一定要放在 WSL2 自己的文件系统里比如~/PX4-Autopilot而不是/mnt/c或/mnt/d。第二WSL2 是动态内存占用你不管它它可能默认吃满宿主机一半以上的内存。后面我会讲用.wslconfig限制内存和 CPU这只是第一步编译 PX4 时还需要额外的 swap 空间。第三精简版系统别碰。网上经常出现windows 11 x-lite、windows server 2022 wsl1 改不成 wsl2这类问题。WSL2 依赖VirtualMachinePlatform、Microsoft-Windows-Subsystem-Linux这两个 Windows 功能精简版系统经常把这些组件砍掉装到最后发现wsl --set-default-version 2一直失败又得重装系统得不偿失。第四USB 设备透传很麻烦。如果你打算接 Pixhawk 硬件的 USB 口WSL2 默认不支持 USB要用 usbipd-win 这样的工具转发。仿真阶段一般用不到真机可以先不折腾。这些边界条件搞清楚之后后面每步都会顺很多。2. 装环境前的版本规划Ubuntu 22.04 ROS 2 Humble 为什么是当前最优组合很多人一上来就装最新版Ubuntu 24.04、ROS 2 Jazzy、Gazebo Ionic结果发现 PX4 的官方仿真插件跑不起来再退回来重新装。我建议冷静一下先把版本组合定好。2.1 不要把最新版当成首选当前2025 年前后最稳的组合是组件推荐版本原因宿主系统Windows 11 23H2/24H2/26H2 均可对 WSL2 支持一致重点是把系统更新保持住发行版Ubuntu 22.04 LTSPX4 官方ubuntu.sh配置脚本支持最成熟的版本ROS 2HumbleUbuntu 22.04 的 LTS 版本资料和社区问答最多GazeboClassic 11PX4 的 SITL 插件默认对接的是 Gazebo ClassicQGC最新稳定版 AppImage对 SITL 的 UDP 自动发现支持最好为什么不用 Ubuntu 24.04因为 PX4 官方文档中 Gazebo 仿真的主要支持路径还是基于 22.04 的 Gazebo Classic而 24.04 默认的 Gazebo 变成了全新的 Ignition/Garden 系列PX4 的适配代码还在持续迭代。你用最新版不是不行但会遇到更多需要自己修的问题。对于“从零搭建”的目标来说先用官方验证过的组合是最聪明的做法这不是保守是省时间。ROS 2 选 Humble 同理。它对应 Ubuntu 22.04属于同一个 LTS 周期官方库安装时不会出现依赖冲突。Humble 的文档、Stack Overflow 的问答数量、各社区踩坑记录都比新版本多得多真出了问题能搜到答案这对新手太重要了。2.2 PX4、Gazebo、ROS 2 的三角关系很多人一开始分不清 PX4、Gazebo、ROS 2 各自负责什么导致后面配置环境变量时一团乱麻。我用一句话理清PX4 是“飞机的大脑”跑的是飞行控制固件仿真时以 SITL 方式运行不依赖真实硬件。Gazebo 是“世界”提供物理仿真环境、地形、传感器数据和无人机机体模型。ROS 2 是“神经系统”负责在 PX4 和上层算法之间传递消息让你方便地写感知、规划、编队等逻辑。换句话说PX4 是主角Gazebo 是舞台ROS 2 是舞台和主角之间的通信管道。QGroundControl 则是地面调度台通过 MAVLink 直接和 PX4 对话帮助你看状态、发指令、看实时画面。在编译 PX4 时make px4_sitl gazebo-classic会把 PX4 固件、Gazebo Classic 插件、MAVLink 接口一次性编译出来启动后 PX4 通过 UDP 14540/14550 端口与 Gazebo 和外部地面站通信。理解了这个链路之后排查问题你就知道该看哪一层了。2.3 硬件底线内存、磁盘和 CPU 分配这套环境对硬件有要求不是随便一台笔记本就能流畅跑的。我实测下来的最低可接受配置宿主机内存16 GB。WSL2 建议分配 8 GB 给 LinuxPX4 编译时最多能吃到 4~6 GBGazebo 再占 2~3 GB这就 10 GB 左右了。只有 8 GB 内存的机器会非常紧张。磁盘留出 50 GB 以上空闲空间。PX4 源码加依赖、ROS 2、Gazebo 加起来 20 GB 很正常再加上编译产物和 swap 文件50 GB 是最低线。CPU8 核以上体验好很多。编译 PX4 是 CPU 密集的任务核数少就只能等。GPU有 NVIDIA 独显最好。WSL2 支持 CUDAnvidia-smi在 WSL2 里可以直接用后续做 AI 推理、Gazebo 渲染都会受益。核显也能跑但 Gazebo 场景复杂时帧率会掉。如果你用的是 Windows Server 2022想把 WSL1 改成 WSL2 却失败多半是VirtualMachinePlatform功能没启用或者没有重启。先检查功能状态不要急着重装系统。3. WSL2 安装与基础调优实战版本规划好了正式开始动手。这一节我会按顺序走一遍尽量细致。3.1 从 Windows 11 侧完成安装打开 PowerShell管理员权限输入wsl --install这个命令会一次性安装 WSL 组件、虚拟机平台并且默认安装 Ubuntu。装完之后重启电脑第一次启动 Ubuntu 会提示你设置 Linux 用户名和密码。用户名会自动加入 sudo 组后面不需要切 root全程用sudo就行。重启后先确认版本wsl -l -v如果输出的 Ubuntu 版本是2就对了。如果发现是1执行wsl --set-version Ubuntu 2如果这一步报错去控制面板“启用或关闭 Windows 功能”里确认虚拟机平台和适用于 Linux 的 Windows 子系统都勾上了再重启一次基本就能解决。注意如果你的电脑开启了 Secure BootWSL2 本身是兼容的。真正容易出问题的是那些“优化版”精简系统把上述 Windows 功能组件裁掉了。遇到WSL 2 is not available类似的报错先检查这两项功能不要盲目重装。3.2 .wslconfig 关键参数WSL2 默认配置不一定适合跑仿真。我在 Windows 用户根目录下创建了.wslconfig文件[wsl2] memory8GB processors8 swap8GB localhostForwardingtrue guiApplicationstruememory分配给 WSL2 的内存上限。我这里设了 8 GB宿主机是 32 GB剩下给 Windows 自己用。processors分配 CPU 核数。注意不是越多越好留一部分给宿主机。swapWSL2 的 swap 文件编译 PX4 时非常有用能明显降低 OOM内存耗尽概率。改完配置之后必须执行wsl --shutdown让 WSL2 完全重启配置才会生效。这一点很容易忘我见过有人改完配置没重启 WSL2然后一直觉得是配置写错了。3.3 换源和基础依赖进入 Ubuntu 后先更新软件源索引sudo apt update sudo apt upgrade -y如果你觉得 Ubuntu 默认源下载速度不理想可以改成国内镜像站。以阿里云为例编辑/etc/apt/sources.list把archive.ubuntu.com换成mirrors.aliyun.comsudo sed -i s|//.*archive.ubuntu.com|//mirrors.aliyun.com|g /etc/apt/sources.list sudo apt update然后装基础工具链sudo apt install -y git build-essential cmake ninja-build \ python3-dev python3-pip python3-venv terminator \ net-tools curl wget lsb-release gnupg这里把cmake、build-essential都装了后面编译 PX4 和 ROS 2 功能包都会用到。terminator是多标签终端支持分屏多机仿真时一个屏幕看多个终端非常方便强烈建议装上。4. Ubuntu 侧 ROS 2 Humble Gazebo Classic 11 联合安装WSL2 环境就位接下来安装核心软件栈。4.1 系统初始化和换源上一步已经做了基础更新。再确认一下 localeROS 2 对 UTF-8 有要求sudo apt install -y locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALLen_US.UTF-8 LANGen_US.UTF-8 export LANGen_US.UTF-8建议把export LANGen_US.UTF-8写进~/.bashrc避免每次开终端要手动设置。4.2 ROS 2 Humble 安装与验证添加 ROS 2 官方软件源sudo apt install -y software-properties-common sudo add-apt-repository universe sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null sudo apt update sudo apt install -y ros-humble-desktopros-humble-desktop包含了 ROS 2 通信、工具、可视化 RViz2、demo 程序体积比较大安装时间会久一些。装完在~/.bashrc末尾加source /opt/ros/humble/setup.bash验证是否装好。一终端跑ros2 run demo_nodes_cpp talker另一终端跑ros2 run demo_nodes_py listener如果能看到Listening ...的输出说明 ROS 2 通信正常。这一步很关键先确认 DDS 没问题再往上层叠 PX4排查起来才不至于两头猜。4.3 Gazebo Classic 11 以及与 ROS 2 的桥接包Ubuntu 22.04 可以直接 apt 装 Gazebo Classicsudo apt install -y gazebo11 libgazebo11-dev验证gazebo --version然后装 ROS 2 的 Gazebo 桥接包sudo apt install -y ros-humble-gazebo-ros-pkgs这个包里包含了gazebo_ros负责把 Gazebo 的传感器数据发布成 ROS 2 话题。后续 AI 接入时我们要从仿真相机里取图像就是靠它。Gazebo 启动后如果界面黑屏或者闪退先确认 WSLg 是否正常工作。最简单的方法是随便开一个 GUI 程序比如gedit如果在 Windows 桌面上能看到窗口说明 WSLg 没问题。黑屏大概率是 GPU 渲染的问题可以试试加环境变量export LIBGL_ALWAYS_SOFTWARE1 gazebo但这是软件渲染帧率有限只用来排查。正常情况 WSL2 里应该能直接用 GPU 渲染。5. PX4 固件编译与第一次仿真起飞ROS 2 和 Gazebo 就绪下面进入正题编译 PX4 并跑起第一架仿真无人机。5.1 克隆与编译 PX4-Autopilot先把源码放到 WSL2 自己的文件系统里cd ~ git clone --recursive -j8 https://github.com/PX4/PX4-Autopilot.git cd PX4-AutopilotPX4 仓库里有子模块--recursive必须带上否则 Gazebo 仿真插件会缺失。如果 clone 过程中子模块拉取不完整再执行git submodule update --init --recursive然后运行官方依赖配置脚本bash ./Tools/setup/ubuntu.sh这个脚本会安装编译 PX4 需要的所有依赖包括 GCC 工具链、Python 包、MAVLink 相关工具等。中间有询问时我一般一路回车用默认选项。接着编译 SITL 和 Gazebo 插件make px4_sitl gazebo-classic第一次编译会很久核心数少的话三十分钟到一小时都可能。成功之后终端里会看到 PX4 shell 的提示符同时 Gazebo 会自动启动一架默认的 iris 无人机出现在世界场景中。这里有个常见问题编译到一半报错内存不足。如果你的.wslconfig只给了 4 GB 内存建议给到 8 GB并把 swap 调到 8 GB然后wsl --shutdown重启 WSL2再重新make。如果提示找不到gazebo-classic这个 target先确认你安装的是 Gazebo Classic 11而不是 Gazebo 的新版本系列。5.2 启动仿真、连接 QGroundControl第一次make px4_sitl gazebo-classic已经把 PX4 和 Gazebo 都拉起来了。平时想重新启动 SITL同样执行make px4_sitl gazebo-classic即可。PX4 SITL 默认通过 UDP 14550 向外发送 MAVLink 数据。这时启动 QGroundControl它就会自动发现仿真无人机。在 WSL2 里下载 QGCcd ~ wget https://github.com/mavlink/qgroundcontrol/releases/download/v4.4.4/QGroundControl.AppImage chmod x QGroundControl.AppImage ./QGroundControl.AppImageQGC 界面打开后主界面会显示当前连接的飞行器你能看到姿态、高度、GPS 状态等。你可以手动切换飞行模式也可以用虚拟摇杆推动无人机起飞。第一次在仿真里看到自己的无人机飞起来还是挺有成就感的。提示QGC 如果在 Windows 侧跑连 WSL2 里的 UDP 14550 端口可能因为 NAT 转发不稳定而连不上。最省事的方案是把 QGC AppImage 也放在 WSL2 里跑两者都在同一 Linux 环境中localhost 直接通信稳得很。5.3 多机协同仿真的启动方法单机仿真跑通后多机协同就是下一步。PX4 官方提供了一个多机脚本cd ~/PX4-Autopilot/Tools/simulation/gazebo-classic ./sitl_multiple_run.sh这个脚本默认启动多架 iris 无人机数量可以在脚本头部配置。每架无人机有独立的 MAVLink 端口例如 14540、14541、14542QGC 也能在同一个地面站里看到多台飞行器。如果你需要手动控制实例编号启动可以开多个终端每个终端执行PX4_SIM_MODELiris ./build/px4_sitl_default/bin/px4 -i 1-i 1是实例编号每开一个终端就递增一个编号。配合 Gazebo 那边 spawn 对应数量的无人机模型就能构建自己的多机仿真场景。多机脚本的好处是省去手动 spawn 模型的麻烦推荐直接用官方脚本。后面讲 AI 协同我用的也是这个脚本启动的多机场景。6. QGroundControl 地面站与 Android 端的协同位置6.1 在 WSL2 里跑 QGC前面已经装了 QGC AppImage这里补充几个使用细节。QGC 的自动连接默认会监听 14550 端口PX4 SITL 启动后它自动就能连上。如果想手动指定连接在 QGC 的“Application Settings - Communication Links”里添加一个 UDP Link本地端口填 14550。还有一个情况仿真跑久了QGC 偶尔会显示“Link Lost”。别急着怀疑配置先看 PX4 SITL 终端有没有报错再确认 Windows 防火墙是否拦截了 UDP 14550。在 Windows 侧给 WSL 相关程序放行 UDP 端口问题基本就消失了。WSL2 里跑 QGC 还有一个体验优化在高 DPI 缩放的 Windows 桌面上QGC 字体可能偏小可以在 QGC 设置里把字体调大。WSLg 对 Qt 应用的兼容性整体不错一般不需要额外配置图形后端。6.2 Android 端在整套体系里的定位标题里有 Android很多人的第一反应是“用手机控制真机”。没错但我想把 Android 端在仿真开发中的三个角色拆开说第一Android 版 QGC 作为移动地面站。它和电脑端 QGC 功能基本一致可以连接局域网里的无人机 MAVLink 端口。在户外真机测试时手机比笔记本方便得多。第二Android 设备作为边缘 AI 节点。现在很多 Android 手机跑 TensorFlow Lite 的速度非常快你可以把手机摄像头对准仿真屏幕做视觉识别然后发指令。但这种“屏幕级”方案不够严谨更适合演示。第三更接近实战的做法把 Android 端连接到 MAVSDK 后端。通过 WiFi 局域网访问电脑上运行的 MAVSDK Server手机上写一个 App 订阅无人机状态发送定点任务指令。这条链路在真机和仿真里通用是值得投入的方向。对于从零开始的人我建议先把电脑端 QGC 和多机仿真玩熟再去碰 Android 端否则两边同时出问题会非常难排查。7. AI 环节接入从单机视觉到多机协同整套环境搭到这一步不用起来做点 AI 就太浪费了。这一节我讲两种实际可落地的接法。7.1 仿真中的 AI 能做什么结合标题里的多机协同AI 在仿真里常见的几个方向目标检测通过下视相机识别地面目标判断目标位置和类别。避障利用前视相机或者激光雷达点云在飞行路径上检测障碍物并绕开。编队协同多架无人机之间通过 ROS 2 话题共享目标信息一架负责侦察、其他架负责执行。Gazebo 的好处是传感器模型齐全相机可以模拟真实噪声比纯数学仿真可靠得多。你可以先在一架无人机的模型上挂相机验证识别逻辑再推广到多机。7.2 接入思路一通过 MAVSDK 控制MAVSDK 提供 Python 和 C 接口能直接发 offboard 指令比手动写 MAVLink 协议省事。安装pip install mavsdk连接多机仿真中的第一架无人机14540 端口发送北东地坐标系下的位置设定值import asyncio from mavsdk import System async def run(): drone System() await drone.connect(system_addressudp://:14540) async for state in drone.core.connection_state(): if state.is_connected: print(connected to vehicle) break # 北 0 米、东 0 米、高度 5 米NED 中 D 向下为正、偏航 0 度 await drone.offboard.set_position_ned([0, 0, -5, 0]) await drone.offboard.start() print(offboard started) await asyncio.sleep(10) asyncio.run(run())执行前需要先把无人机切换到 Offboard 模式可以用 QGC 手动切也可以在代码里用drone.offboard.start()自动完成不同 PX4 版本行为略有差异建议先在 QGC 里确认模式状态。这段代码跑通后你就有了“用 Python 控制仿真无人机”的能力AI 逻辑只需要产出目标位置剩下的交给这套接口。7.3 接入思路二ROS 2 话题驱动如果你已经写了 ROS 2 节点更自然的方式是把 PX4 纳入 ROS 2 图。PX4 仓库里自带 ROS 2 接口px4_msgs位于~/PX4-Autopilot/ROS2/px4_msgs。编译它cd ~/PX4-Autopilot/ROS2 colcon build source ~/PX4-Autopilot/ROS2/install/setup.bash编译完成之后你可以在 ROS 2 节点里订阅fmu/out/vehicle_attitude获取姿态也可以向fmu/in/offboard_control_mode和fmu/in/trajectory_setpoint发布 offboard 指令。这种方式的好处是和视觉、规划算法完全共享同一套通信体系写多机协同逻辑时特别顺手。7.4 多机协同的 AI 演示逻辑结合 5.3 节的多机脚本一个简单的协同演示可以这样设计启动sitl_multiple_run.sh得到两架无人机记为无人机 A14540和无人机 B14541。给 A 挂一个下视相机通过gazebo_ros的 camera 插件把图像发布到 ROS 2 话题/drone_A/camera/image_raw。写一个 ROS 2 视觉节点检测地面上的红色目标估算目标相对 A 的位置。将目标坐标通过 ROS 2 话题/target_pos广播出去。无人机 B 的 offboard 节点订阅/target_pos然后朝目标飞。这样就是一个完整的“侦察-执行”协同链路而且每个环节都能替换成更复杂的算法比如 YOLO 检测、A* 路径规划、动态避障。第一步先把通信链跑通AI 模型反而是最容易换的部分。Gazebo 默认的 iris 机型不一定带相机需要在模型 SDF 里加 camera sensor 或通过 gazebo_ros 的插件添加。这一步比较繁琐但网上模板很多照着改即可。我自己的做法是单独复制一份 iris 模型文件在里面加一个朝下的 RGB 相机插件避免动到官方默认模型。8. 实测中遇到的坑和最后一点心得搭建这套环境的过程中我踩过的坑不算少这里挑几个最值得说的。8.1 内存和编译速度第一次编译 PX4 直接 OOM当时以为代码写错了后来发现是内存不够。查了.wslconfig才想起来用的是默认配置WSL2 只给我分了宿主机一半内存。调整到 8 GB 8 GB swap 之后编译稳定多了。另外make px4_sitl gazebo-classic可以限制并行任务数减少内存峰值make px4_sitl gazebo-classic -j4如果你的机器内存不大别贪心开-j16。8.2 Gazebo 黑屏与图形问题WSL2 下 Gazebo 黑屏最常见的原因有两个一是 WSLg 没有正常工作二是模型资源路径没配对。先确认gazebo --version正常再试着打开一个空场景。如果空场景正常但 iris 模型场景黑屏很多是模型路径的问题检查 PX4 的setup_gazebo.bash是否被 source 了。另一个经验不要在 Windows 侧的文件夹里存放 Gazebo 模型文件WSL2 读取/mnt/c下的模型文件速度很慢而且路径处理经常有问题。把模型放到~/下最省心。8.3 QGC 连接断掉的排查QGC 连不上 PX4 SITL 时我一般按顺序查PX4 SITL 终端是否还在运行有没有报端口占用。QGC 和 PX4 是否都在 WSL2 内都在的话几乎不会有网络问题。Windows 防火墙是否拦截了 UDP 14550。是否用wsl --shutdown重启过 WSL2IP 变化可能导致旧的连接失效。大多数情况下第 2 点就能解决问题。我强烈建议把 QGC 也放到 WSL2 里跑比在 Windows 侧连着省心得多。8.4 一个能少走弯路的习惯最后分享一个习惯每次改动环境后都先跑一遍最小验证链路。比如装了 ROS 2 就跑 talker/listener装了 Gazebo 就跑空场景编译完 PX4 就先让它飞起来。如果不做这些最小验证一旦环境出问题你根本不知道是哪一层坏的。这套环境目前是我电脑上利用率最高的开发环境。真机飞行测试前的算法验证、多机编队逻辑调试、AI 视觉识别我都在 WSL2 Gazebo 里完成。等仿真里跑得足够成熟再上真机风险小很多迭代也快。希望这篇记录能帮你少走点弯路。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

React Native Android截图排坑:react-native-view-shot实战指南 2026/9/29 2:53:06

React Native Android截图排坑:react-native-view-shot实战指南

前两天在 Android 端接应用内截图功能,调研了一圈最后选了 react-native-view-shot。本以为调好几个参数就完事,结果从空白截图、FileUriExposedException,一路踩到 Android 13 权限闪退,前前后后折腾了一整天。这篇就把我在 RN …

阅读更多 →
rider开发asp.net webform项目 2026/9/29 2:52:53

rider开发asp.net webform项目

环境 windows10 .net framework4.8 rider2025.3 新建类库项目 编辑aspxstudy01.csproj 添加 WebForms 项目类型 GUID <!--下面一行代码表示是web项目--> <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}<…

阅读更多 →
devenv 如何识别 vcxproj:Visual Studio 项目系统与 MSBuild 内部机制解析 2026/9/29 2:52:53

devenv 如何识别 vcxproj:Visual Studio 项目系统与 MSBuild 内部机制解析

在 VS2017 的使用周期里&#xff0c;应该有不少人做过这样的事&#xff1a;打开命令行&#xff0c;敲一句devenv MyProject.vcxproj&#xff0c;然后看着 Visual Studio 的界面刷一下蹦出来&#xff0c;项目被挂到了解决方案资源管理器里。如果你再狠一点&#xff0c;输入deven…

阅读更多 →
ARM SCP系统控制处理器:电源管理与低功耗调试实战指南 2026/9/29 2:52:47

ARM SCP系统控制处理器:电源管理与低功耗调试实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
嵌入式偶发故障排查:换机、录屏与批次对照三招闭环 2026/9/29 2:52:47

嵌入式偶发故障排查:换机、录屏与批次对照三招闭环

1. 偶发性故障的本质&#xff1a;不是“运气差”&#xff0c;而是信号链路上的时序裂痕你有没有遇到过这样的情况&#xff1a;设备明明昨天还一切正常&#xff0c;今天突然串口收不到数据&#xff0c;重启十次有八次能恢复&#xff1b;蓝牙模块连着连着就断开&#xff0c;但手机…

阅读更多 →
iOS面试核心知识点全解析:从Runtime到性能优化 2026/9/29 2:52:47

iOS面试核心知识点全解析:从Runtime到性能优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉