Qt5Svg.dll 提供 QSvgRenderer、QSvgWidget、QSvgGenerator 等核心类。QSvgRenderer 解析 SVG 的 XML 结构,处理 path、rect、circle、text、g、use、defs、gradient、clipPath、mask 等元素,并转换为 QPainterPath、QBrush、QPen、QTransform 等对象。QPainter 在 QWidget、QImage、QPixmap、QPrinter 上执行绘制,因此 SVG 可无级缩放、旋转、透明合成。QSvgWidget 可直接嵌入界面显示 SVG。
QSvgGenerator 允许把 Qt 绘制操作输出为 SVG,适用于矢量报表、图表和可编辑图形。该 DLL 还配合插件机制,为 QImageReader、QIcon、QIconEngine 提供 SVG 读取能力。界面中的 SVG 图标、主题资源、Qt Quick 图像元素、QML Image 对 SVG 的加载,最终都会调用该模块。缺少时,程序可能无法识别 svg 后缀,或能识别却无法正确解码。
Windows 上,Qt5Svg.dll 通常与 Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll、platforms/qwindows.dll、imageformats/qsvg.dll 协同工作。imageformats/qsvg.dll 多为图像格式插件,Qt5Svg.dll 是模块本体,二者版本、架构和编译器必须一致。MSVC 程序应部署 MSVC 版,MinGW 程序应部署 MinGW 版。32 位程序不能加载 64 位 DLL,反之亦然。
排查时先确认可执行文件目录、PATH 和 Qt 插件目录。可以使用 Dependencies、Process Monitor 或 Qt 的 windeployqt 检查依赖。windeployqt 通常会把 Qt5Svg.dll 复制到程序目录,并部署 imageformats/qsvg.dll。若手动部署,应保持目录结构,例如程序目录下放 Qt5Svg.dll,插件目录下放 imageformats/qsvg.dll。还需注意调试版与发布版不能混用:调试版通常名为 Qt5Svgd.dll,发布版为 Qt5Svg.dll;混用可能引发 CRT、堆和符号解析问题。核对 Qt 版本时也需谨慎,5.15 与 5.12 的二进制接口并非完全兼容,升级或降级 Qt 时应整体替换相关 DLL,避免单独替换 Qt5Svg.dll 造成 ABI 冲突。