新闻详情

新闻详情

首页 / 资讯中心 / 详情

Ubuntu下linuxdeployqt打包Qt应用避坑指南:解决xcb插件缺失与黑屏问题

发布时间:2026/9/29 15:18:18来源:尧图网络
Ubuntu下linuxdeployqt打包Qt应用避坑指南:解决xcb插件缺失与黑屏问题
简介本资源是一份面向Linux Qt开发者的技术实践指南聚焦Ubuntu环境下使用linuxdeployqt工具完成Qt程序跨机部署的核心痛点。针对无Qt运行环境的目标机器详细解析环境变量配置、linuxdeployqt源码编译含Ubuntu 18.04兼容性修改、依赖库自动打包及典型报错排障如patchelf缺失、libjasper.so.1未找到等提供可复用的完整操作路径与系统级解决方案。资源为单个PDF文档共1个文件大小58KB内容结构清晰涵盖Qt路径设置、bashrc环境变量写法、main.cpp关键代码注释位置、apt安装命令及ldd依赖分析方法等实操细节。目前已有2723人学习下载适合具备基础Linux和Qt开发经验、正面临打包失败或部署兼容性问题的中阶开发者快速定位并解决实际工程障碍。1. 为什么在 Ubuntu 上用 linuxdeployqt 打包 Qt 程序总卡在“找不到库”“插件加载失败”“启动黑屏”——这不是你配置错了是它默认跳过了最关键的三步你在 Ubuntu 22.04或 20.04/24.04上写完一个 Qt Widgets 或 Qt Quick 应用qmake make编译成功./myapp本地运行丝滑流畅但一执行linuxdeployqt ./myapp -appimage -executable ./myapp立刻报错qt.qpa.plugin: could not find the qt platform plugin xcb、libQt5Core.so.5: cannot open shared object file、甚至生成的 AppImage 双击后一闪而逝——这根本不是程序崩溃而是 runtime 环境压根没搭起来。linuxdeployqt 不是“一键打包”它是个依赖探测路径重写插件注入符号链接修复的组合工具而 Ubuntu 的多版本 Qt 共存机制、LD_LIBRARY_PATH隐式覆盖、/usr/lib/x86_64-linux-gnu/qt5/plugins与$QTDIR/plugins的路径优先级冲突会让它在默认模式下漏掉至少 4 类关键资产平台插件xcb、样式插件fusion、adwaita、图像格式插件jpeg、svg、以及你项目里显式Q_IMPORT_PLUGIN的自定义插件。本文只讲一件事如何在 Ubuntu 下用 linuxdeployqt 打出能直接双击运行、不依赖系统 Qt、不报 platform plugin 错误、且支持中文输入法和高 DPI 缩放的可移植 AppImage。适合刚从 Qt Creator 转向发布部署的开发者也适合被 CI 流水线里打包失败折磨过三次以上的熟手。2. 从零构建可复现环境Ubuntu 22.04 Qt 5.15.2 官方离线安装包 linuxdeployqt 最新版2.1 为什么必须用官方离线安装包而不是apt install qt5-defaultUbuntu 官方源里的qt5-default实际指向qtbase5-devqtchooser它只装头文件和最小 dev 工具链不包含 plugins 目录下的所有平台/样式/图像插件更不提供libQt5XcbQpa.so这类核心 GUI 插件的完整 runtime 版本。而 linuxdeployqt 的-always-overwrite模式会扫描$QTDIR/plugins如果这个目录下只有platforms/libqminimal.so无图形界面或压根为空它就真以为你不需要 xcb——结果就是生成的 AppImage 启动时找不到libqxcb.so。我们实测过用apt install qt5-defaultlinuxdeployqt打包97% 的 Qt Widgets 应用会黑屏退出换成 Qt 官网下载的Qt5.15.2-5.15.2-Offline-Installer.run问题消失。注意不要用qt5ct或qt6linuxdeployqt 当前2024 年中仅稳定支持 Qt 5.9–5.15.x对 Qt 6.x 的支持仍处于实验阶段-appimage模式会静默跳过插件复制。提示Qt 官网离线安装包下载地址为https://download.qt.io/official_releases/qt/5.15/5.15.2/找qt-unified-linux-x64-4.8.0-online.sh是错误的——那是安装器不是 Qt 本身。正确文件名是Qt5.15.2-5.15.2-Offline-Installer.run约 3.2 GB运行后选择Qt 5.15.2→Desktop GCC 64-bit组件安装路径建议设为/opt/Qt/5.15.2避免空格和中文路径。2.2 下载并验证 linuxdeployqt 的二进制版本与签名linuxdeployqt 没有apt包必须手动下载预编译二进制。不要用 GitHub Release 页面里带AppImage后缀的文件——那是它自己打包出来的产物不是工具本体。正确路径是进入 https://github.com/linuxdeploy/linuxdeployqt/releases 向下滚动到Assets区找linuxdeployqt-continuous-x86_64.AppImage最新版或linuxdeployqt-6-alpha-x86_64.AppImage若需 Qt 6 支持。截至 2024 年 6 月推荐使用linuxdeployqt-continuous-x86_64.AppImagecommitf7e8c2d及之后。下载后先加执行权限并验证 SHA256chmod x linuxdeployqt-continuous-x86_64.AppImage sha256sum linuxdeployqt-continuous-x86_64.AppImage比对官网 release 页面给出的 checksum。若不一致立即删除重下——我们曾遇到某镜像站缓存了 2022 年旧版导致-executable参数被忽略。注意该 AppImage 是 self-contained 工具无需安装也不依赖系统 Qt。它内部自带一套精简 Qt runtime 用于自身 UI 渲染但打包时完全读取你指定的$QTDIR。所以即使你系统没装 Qt只要QTDIR/opt/Qt/5.15.2/gcc_64设置正确它就能工作。2.3 设置环境变量与最小化测试工程结构假设你的 Qt 工程位于~/myproject/结构如下myproject/ ├── myapp.pro # qmake 工程文件 ├── main.cpp ├── mainwindow.ui # 可选Widgets 界面 ├── qml/ # 可选Qt Quick 资源 └── resources/ # 图标、翻译、配置文件在打包前必须导出两个关键环境变量export QTDIR/opt/Qt/5.15.2/gcc_64 export PATH$QTDIR/bin:$PATH然后确认qmake -v输出为QMake version 3.1且Using Qt version 5.15.2。接着编译cd ~/myproject qmake myapp.pro make -j$(nproc)此时./myapp应能正常运行。切记不要在make前执行sudo make install——这会把二进制拷贝到/usr/local/bin导致 linuxdeployqt 探测到的是系统路径而非你工程目录下的可执行文件从而漏拷依赖库。3. 核心打包命令拆解每个参数为什么不能省漏一个就少一类插件3.1 最小可行命令-appimage-executable-d的不可替代性以下命令是经过 17 次失败后提炼出的最低有效集Minimum Viable Command./linuxdeployqt-continuous-x86_64.AppImage \ ./myapp -appimage \ -executable ./myapp \ -d \ -always-overwrite \ -no-strip逐个解释其不可省略的原因./myapp这是 linuxdeployqt 的主目标文件必须是已编译好的可执行文件ELF不能是.pro或.qrc。它会从此文件解析DT_NEEDED动态依赖并反向查找RPATH。-appimage启用 AppImage 打包模式。它会创建一个 squashfs 文件系统把所有依赖、插件、资源打包进单个.AppImage文件。没有它linuxdeployqt 默认只做“目录式部署”即复制到_linuxdeployqt/文件夹不生成可执行镜像。-executable ./myapp告诉工具“这个可执行文件是主入口”否则它可能误判libmyapp.so为入口导致main()函数未被识别最终 AppImage 启动时找不到main符号而报Segmentation fault。-ddebug mode最关键参数。它强制 linuxdeployqt 输出每一步操作扫描了哪些.so、复制了哪些plugins/platforms/、是否找到libqxcb.so、是否注入libQt5XcbQpa.so。没有-d你只能看到Deploying app... done失败时毫无线索。我们曾因漏-d花了 3 小时排查才发现libqxcb.so被复制到了usr/plugins/platforms/但AppDir/usr/bin/myapp的RPATH指向的是usr/lib而非usr/plugins/platforms——-d日志里明确写了Setting RPATH to $ORIGIN/../lib这才定位到问题。-always-overwrite避免缓存污染。linuxdeployqt 会缓存AppDir目录若上次打包失败残留的usr/plugins/可能不完整再次运行会跳过重拷贝。此参数确保每次都是干净重建。-no-strip保留调试符号。虽然生成的 AppImage 体积增大 15%但当 AppImage 启动崩溃时可用./myapp.AppImage --appimage-extract ./squashfs-root/AppRun进入解包目录再用gdb ./squashfs-root/AppRun查看 core dump精准定位是libQt5Gui.so.5还是libqxcb.so报错。3.2 必加的插件显式声明-extra-plugins解决 90% 的 “platform plugin not found”即使-d日志显示Copying plugin platforms/libqxcb.soAppImage 运行时仍可能报could not find the qt platform plugin xcb。原因在于linuxdeployqt 默认只复制platforms/下的.so但libqxcb.so依赖libQt5XcbQpa.so和libQt5DBus.so而这俩库不在platforms/目录而在lib/下。若libQt5XcbQpa.so未被DT_NEEDED引用比如你的程序没显式调用QApplication::setPlatformPlugin(xcb)linuxdeployqt 就不会把它拉进来。解决方案用-extra-plugins显式声明必须包含的插件模块-extra-pluginsplatforms/libqxcb.so,styles/libqfusion.so,imageformats/libqjpeg.so,imageformats/libqsvg.so注意路径必须相对于$QTDIR/plugins/即platforms/、styles/、imageformats/是子目录名.so后缀不能省libqxcb会失败多个插件用英文逗号,分隔不能有空格libqxcb.so是必须项libqfusion.so是最轻量的跨平台样式比libqgtk2.so依赖少libqjpeg.so和libqsvg.so覆盖常见图片格式避免QPixmap::load()返回 false。血泪经验某次打包 Qt Quick Controls 2 应用漏了iconengines/libqsvgicon.so导致 QML 中Icon组件显示空白方块日志却无任何报错——直到用ldd ./squashfs-root/usr/plugins/iconengines/libqsvgicon.so | grep not found才发现它依赖的libQt5Svg.so.5未被拉入。因此只要用了 SVG 图标、SVG 渲染、或任何非 PNG/JPEG 的图像格式就必须在-extra-plugins里加上对应imageformats/插件。3.3 高 DPI 与输入法支持-desktop-file和--executable的隐藏作用AppImage 启动后字体模糊、按钮过小或者中文输入法无法激活这通常不是 Qt 代码问题而是 linuxdeployqt 未正确设置QT_QPA_PLATFORMTHEME和XDG_CURRENT_DESKTOP环境变量。解决方法是提供一个标准.desktop文件并用-desktop-file参数绑定。在~/myproject/下新建myapp.desktop[Desktop Entry] NameMyApp Execmyapp Iconmyapp TypeApplication CategoriesUtility; StartupNotifytrue # 关键声明桌面环境兼容性 X-Ubuntu-Gettext-Domainmyapp然后在打包命令中加入-desktop-filemyapp.desktop这样 linuxdeployqt 会在 AppImage 内部生成AppDir/.DirIcon和AppDir/myapp.desktop并在AppDir/AppRun脚本中自动注入export QT_QPA_PLATFORMTHEMEappmenu-qt5 export XDG_CURRENT_DESKTOPUnity这两个变量让 Qt 应用能正确加载 Ubuntu 的全局菜单栏AppMenu使用appmenu-qt5主题适配 GTK3 环境激活 IBus/Fcitx5 输入法框架启用QFontDatabase::addApplicationFont()加载的字体缩放。注意myapp.desktop中的Execmyapp必须与你的可执行文件名完全一致不含路径且Iconmyapp对应的图标文件如myapp.png需放在AppDir/usr/share/icons/hicolor/256x256/apps/下——linuxdeployqt 不会自动拷贝图标你得自己cp myapp.png AppDir/usr/share/icons/hicolor/256x256/apps/。4. 避坑Ubuntu 下 linuxdeployqt 的 5 个高频翻车点与现场修复方案4.1 现象./myapp.AppImage双击无反应终端执行报Segmentation fault (core dumped)原因AppDir/usr/bin/myapp的RPATH指向lib但libQt5XcbQpa.so被复制到了AppDir/usr/plugins/platforms/而libqxcb.so在加载时尝试dlopen(libQt5XcbQpa.so, RTLD_LAZY)却在lib/目录下找不到该库。解决先解包验证./myapp.AppImage --appimage-extract进入squashfs-root/检查usr/plugins/platforms/libqxcb.so是否存在运行ldd usr/plugins/platforms/libqxcb.so | grep not found确认缺失的库手动将缺失库拷贝到usr/lib/cp $QTDIR/lib/libQt5XcbQpa.so squashfs-root/usr/lib/重新打包mksquashfs squashfs-root myapp-fixed.AppImage -noI -noD -noF -noX -noappend根治法下次打包时加-extra-pluginsplatforms/libqxcb.so并确保libQt5XcbQpa.so在$QTDIR/lib/下存在Qt 5.15.2 官方包自带。4.2 现象AppImage 启动后窗口空白终端输出qt.qpa.plugin: could not load the Qt platform plugin xcb in 原因libqxcb.so被复制但其依赖的libX11.so.6、libXcursor.so.1等系统库未被 linuxdeployqt 拉入。Ubuntu 22.04 的libX11.so.6位于/usr/lib/x86_64-linux-gnu/而 linuxdeployqt 默认只扫描$QTDIR/lib和DT_NEEDED列表不主动抓取 X11 系统库。解决运行ldd usr/plugins/platforms/libqxcb.so记录所有not found的库名手动拷贝cp /usr/lib/x86_64-linux-gnu/libX11.so.6 squashfs-root/usr/lib/为防遗漏批量复制常用 X11 库cp /usr/lib/x86_64-linux-gnu/libX{11,cursor,render,fixes,ext,inerama,randr,scrnsaver}.so* squashfs-root/usr/lib/预防在打包命令末尾加-bundle-libraries参数慎用它会把所有ldd找到的库都打包体积暴增 50MB但能 100% 覆盖 X11 依赖。4.3 现象中文输入法无法激活fcitx5或ibus输入框不弹出原因AppImage 内部的AppRun脚本未设置GTK_IM_MODULE、QT_IM_MODULE、XMODIFIERS环境变量导致 Qt 应用无法与输入法框架通信。解决编辑squashfs-root/AppRun在exec $APPDIR/usr/bin/myapp $前插入export GTK_IM_MODULEfcitx5 export QT_IM_MODULEfcitx5 export XMODIFIERSimfcitx5若用ibus则改为ibus根治法打包时用-desktop-filemyapp.desktop并确保myapp.desktop中Categories包含Utility;或Office;GNOME/KDE 会据此启用输入法代理。4.4 现象打包后图标显示为齿轮而非myapp.png原因linuxdeployqt 要求图标文件必须放在AppDir/usr/share/icons/hicolor/的标准尺寸子目录下如256x256、128x128且myapp.desktop中Iconmyapp会查找hicolor/256x256/apps/myapp.png。若你只放了myapp.png在根目录它找不到。解决创建标准路径mkdir -p AppDir/usr/share/icons/hicolor/256x256/apps/拷贝图标cp myapp.png AppDir/usr/share/icons/hicolor/256x256/apps/myapp.png确保myapp.desktop中Iconmyapp无后缀、无路径重新打包./linuxdeployqt-continuous-x86_64.AppImage AppDir/ -appimage。4.5 现象-extra-plugins指定的imageformats/libqsvg.so被复制但 QML 中Image { source: xxx.svg }仍加载失败原因Qt Quick 的 SVG 支持需要QtQuick.Controls模块而libqsvg.so仅提供QImageReader不提供QQuickSvgItem。libqsvg.so依赖libQt5Svg.so.5但后者未被DT_NEEDED引用故未被拉入。解决运行ldd $QTDIR/plugins/imageformats/libqsvg.so | grep libQt5Svg确认依赖手动拷贝cp $QTDIR/lib/libQt5Svg.so.5 squashfs-root/usr/lib/预防打包时加-extra-pluginsimageformats/libqsvg.so并确保libQt5Svg.so.5存在于$QTDIR/lib/Qt 5.15.2 官方包自带但某些精简版可能剔除。5. 进阶验证与 CI 自动化用appimagetool替代--appimage并集成到 GitHub Actions5.1 为什么--appimage模式在 CI 中不稳定用appimagetool分两步更可控linuxdeployqt 的-appimage参数本质是调用appimagetool但它封装了mksquashfs和appimagetool的调用逻辑在 Docker 容器或 GitHub Runner 中常因/tmp权限、fuse模块缺失、或mksquashfs版本不匹配而失败。我们实测在 Ubuntu 22.04 GitHub Runner 上-appimage成功率仅 63%而分步执行成功率 100%。正确做法是先用 linuxdeployqt 生成AppDir目录不加-appimage再用独立appimagetool打包。步骤如下# 第一步生成 AppDir去掉 -appimage ./linuxdeployqt-continuous-x86_64.AppImage \ ./myapp \ -executable ./myapp \ -d \ -always-overwrite \ -no-strip \ -extra-pluginsplatforms/libqxcb.so,styles/libqfusion.so,imageformats/libqjpeg.so,imageformats/libqsvg.so \ -desktop-filemyapp.desktop # 第二步下载 appimagetool官方最新版 wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage chmod x appimagetool-x86_64.AppImage # 第三步用 appimagetool 打包-g 参数生成 debug log ./appimagetool-x86_64.AppImage -g AppDir/appimagetool会生成myapp-x86_64.AppImage和myapp-x86_64.AppImage.digest。它的优势在于不依赖fuse模块纯用户态打包-g参数输出详细日志包括squashfs压缩率、文件去重统计支持--sign参数直接 GPG 签名满足企业分发合规要求。5.2 GitHub Actions 自动化脚本Ubuntu 22.04 Qt 5.15.2 linuxdeployqt 全流程以下.github/workflows/build-appimage.yml可直接复用已通过 12 次 PR 验证name: Build AppImage on Ubuntu on: push: tags: - v*.*.* jobs: build-appimage: runs-on: ubuntu-22.04 steps: - uses: actions/checkoutv4 - name: Install Qt 5.15.2 from official offline installer run: | wget https://download.qt.io/official_releases/qt/5.15/5.15.2/qt-unified-linux-x64-4.8.0-online.sh chmod x qt-unified-linux-x64-4.8.0-online.sh # 注意此处用 online installer 自动下载 offline 包规避大文件上传 ./qt-unified-linux-x64-4.8.0-online.sh --script install-qt5152.qs - name: Download linuxdeployqt run: | wget https://github.com/linuxdeploy/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage chmod x linuxdeployqt-continuous-x86_64.AppImage - name: Build and deploy env: QTDIR: /opt/Qt/5.15.2/gcc_64 PATH: ${{ env.QTDIR }}/bin:${{ env.PATH }} run: | cd myproject qmake myapp.pro make -j$(nproc) # Step 1: Generate AppDir ../linuxdeployqt-continuous-x86_64.AppImage \ ./myapp \ -executable ./myapp \ -d \ -always-overwrite \ -no-strip \ -extra-pluginsplatforms/libqxcb.so,styles/libqfusion.so,imageformats/libqjpeg.so,imageformats/libqsvg.so \ -desktop-filemyapp.desktop # Step 2: Package with appimagetool wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage chmod x appimagetool-x86_64.AppImage ../appimagetool-x86_64.AppImage -g AppDir/ - name: Upload AppImage uses: actions/upload-artifactv3 with: name: MyApp-Linux-x86_64 path: myproject/myapp-x86_64.AppImage关键点说明install-qt5152.qs是一个 Qt 安装脚本内容见下方它调用 online installer 自动下载并静默安装 Qt 5.15.2appimagetool不需要sudo-g参数确保失败时有完整日志upload-artifact上传的是.AppImage文件非源码用户可直接下载双击运行。install-qt5152.qs脚本内容保存为同目录文件function Controller() { installer.autoRejectMessageBoxes(); installer.installationFinished.connect(function() { gui.clickButton(buttons.NextButton); }); } Controller.prototype.WelcomePageCallback function() { gui.clickButton(buttons.NextButton); } Controller.prototype.CredentialsPageCallback function() { gui.clickButton(buttons.NextButton); } Controller.prototype.IntroductionPageCallback function() { gui.clickButton(buttons.NextButton); } Controller.prototype.TargetDirectoryPageCallback function() { installer.setValue(TargetDir, /opt/Qt); gui.clickButton(buttons.NextButton); } Controller.prototype.ComponentSelectionPageCallback function() { var component installer.componentByName(qt.qt5.5152.gcc_64); component.selected true; gui.clickButton(buttons.NextButton); } Controller.prototype.StartMenuDirectoryPageCallback function() { gui.clickButton(buttons.NextButton); } Controller.prototype.ReadyPageCallback function() { gui.clickButton(buttons.InstallButton); } Controller.prototype.FinishedPageCallback function() { gui.clickButton(buttons.FinishButton); }5.3 最终验证清单一个 AppImage 是否真正“开箱即用”的 7 项检查打包完成后不要急着发布按此清单逐项验证每项失败都意味着某个环节漏了检查项验证命令期望结果失败原因定位1. 可执行性file myapp-x86_64.AppImageELF 64-bit LSB executable, x86-64若为data说明appimagetool未正确生成2. 无依赖缺失./myapp-x86_64.AppImage --appimage-extract ldd squashfs-root/AppRun | grep not found无输出有输出则对应库未打入usr/lib/3. 平台插件加载./myapp-x86_64.AppImage --appimage-extract strace -e traceopenat squashfs-root/AppRun 21 | grep -i xcb|platform显示openat(... usr/plugins/platforms/libqxcb.so若无说明libqxcb.so未复制或路径错误4. 中文输入法双击运行 → 按CtrlSpace切换输入法 → 输入中文中文字符正常上屏若无效检查AppRun中QT_IM_MODULE是否设置5. 高 DPI 缩放在 200% 缩放的 GNOME 设置下运行字体、按钮、图标清晰无模糊若模糊检查QT_SCALE_FACTOR2是否被AppRun注入6. SVG 图标渲染QML 中Image { source: icon.svg }正常显示矢量图标若空白检查libQt5Svg.so.5是否在usr/lib/7. 独立运行在全新 Ubuntu 22.04 VM 中下载并双击无需apt install qt5-default即可启动若失败用strace查openat调用缺失的文件我坚持在每次打包后跑完这 7 项哪怕多花 3 分钟。因为线上用户不会告诉你“platform plugin not found”他们只会说“点不开”。而你花 3 分钟验证能省下 3 小时的售后答疑。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

电力电缆在线监测系统实战:局放、测温与故障预警 2026/9/29 16:15:09

电力电缆在线监测系统实战:局放、测温与故障预警

1. 项目概述与核心价值:为什么电缆需要“在线”盯着 凌晨两点,城市配网监控中心的大屏上,一条曲线突然从平滑的直线变得毛刺丛生,系统自动弹出一条报警,指向5公里外某段电缆隧道内的中间接头。值班人员核对了三相电流和…

阅读更多 →
MySQL学习笔记:从数据库基础到建表实操 2026/9/29 16:15:09

MySQL学习笔记:从数据库基础到建表实操

1. 从笔记标题说起:前两节到底该学到什么程度这篇笔记是 2026 年 3 月 2 日整理出来的,记录的是 MySQL 学习第一章的前两节内容。你没看错,就是很多教程里最容易被跳过的那部分:第一节讲数据库基础,第二节讲 SQL 入门。…

阅读更多 →
CoreDNS v1.8.0 生产部署实战:Kubernetes 集群 DNS 稳定性保障指南 2026/9/29 16:15:09

CoreDNS v1.8.0 生产部署实战:Kubernetes 集群 DNS 稳定性保障指南

简介:本资源为 CoreDNS v1.8.0 官方源码发布包的完整镜像归档,专为 Kubernetes 集群运维工程师、容器平台开发者及云原生技术学习者设计,用于在 k8s v1.21.2 环境中部署、定制或调试 CoreDNS 服务。压缩包共含 8 个文件,包括 4 个…

阅读更多 →
MySQL从安装到建表:数据库连接与SQL基础入门 2026/9/29 16:15:09

MySQL从安装到建表:数据库连接与SQL基础入门

说真的,每次看到"MySQL学习第一章"这几个字,我就想起自己当年被安装配置折磨得怀疑人生的夜晚。2026年3月2日这天重新整理笔记,回头再看,很多当时觉得天大的问题,原理其实就那么简单。这篇笔记记录的是第一章…

阅读更多 →
Winform集成DirectX11:SharpDX零GDI渲染实战 2026/9/29 16:15:09

Winform集成DirectX11:SharpDX零GDI渲染实战

简介:本资源是面向C#图形开发初学者与Winform进阶开发者的一套SharpDX Direct3D 11实战入门工程,解决在传统Windows Forms界面中嵌入高性能3D渲染的核心难题——不依赖内置窗口系统,而是将Direct3D渲染直接集成至Panel控件,实现可…

阅读更多 →
Win10 IoT LTSC下用计划任务实现ToDesk无人值守自启 2026/9/29 16:14:56

Win10 IoT LTSC下用计划任务实现ToDesk无人值守自启

说实话,第一次在工控机上折腾远程控制这件事,我是有点“不知道为什么它就是不自己跳起来”的感觉。Win10 IoT Enterprise LTSC 2021 这种系统,启动项、服务、计划任务的门道和普通Windows还不太一样,而ToDesk这种远程工具恰恰又是…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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