news 2026/5/20 9:21:01

【QT开发】Windows 10 + Qt 5.15.2 手动编译安装 Qt OPC UA 模块完整记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【QT开发】Windows 10 + Qt 5.15.2 手动编译安装 Qt OPC UA 模块完整记录

一、背景

  • 操作系统:Windows 10

  • Qt 版本:5.15.2 (MSVC 2019 64-bit)

  • 目标:使用 Qt OPC UA 模块连接 OPC UA 服务器

  • 问题:Qt 5.15.2 不自带 OPC UA 模块,需从源码编译安装

    二、整体流程

  • 下载 Qt OPC UA 源码

  • 安装依赖(OpenSSL、Perl)

  • 配置编译环境

  • 编译 Debug / Release 版本

  • 安装库文件到 Qt 目录

  • 复制后端插件

  • 注册模块至 Qt(实现QT += opcua

  • 验证

    三、详细步骤

    3.1 下载源码

  • git clone https://github.com/qt/qtopcua.git cd qtopcua git checkout 5.15.2 git submodule update --init --recursive

    3.2 安装 OpenSSL

    Qt OPC UA 依赖 OpenSSL 1.1.1 版本(3.x 不兼容)。

  • 下载:Win64OpenSSL-1_1_1w.exe

  • 安装路径:E:\OpenSSL\OpenSSL-Win64

  • 安装时勾选 “Add to system PATH”

    3.3 安装 Perl

    编译过程需要 Perl 运行syncqt.pl

  • 下载:Strawberry Perl 5.32.1.1 64-bit

  • 安装路径:E:\strawberryPerl

  • 手动添加至系统环境变量 PATH:

    • E:\strawberryPerl\perl\bin

    • E:\strawberryPerl\perl\site\bin

验证

perl -v

3.4 配置 OpenSSL 路径(重要)

编辑源码中的src/opcua/opcua.pro,指定 OpenSSL 路径:

OpenSSL_Path = "E:/OpenSSL/OpenSSL-Win64" INCLUDEPATH += $$OpenSSL_Path/include LIBS += -L$$OpenSSL_Path/lib -llibcrypto -llibssl

3.5 编译与安装

注意:Qt Creator 图形界面
  1. 打开qtopcua.pro

  2. 选择Release配置(Debug 也可,但 Release 更稳定)

  3. Projects → Build Environment中添加:

    • OPENSSL_ROOT_DIR = E:/OpenSSL/OpenSSL-Win64

    • OPENSSL_INCLUDE_DIR = E:/OpenSSL/OpenSSL-Win64/include

    • OPENSSL_LIBRARY_DIR = E:/OpenSSL/OpenSSL-Win64/lib

    • PATH追加E:\strawberryPerl\perl\bin;E:\strawberryPerl\perl\site\bin

  4. 点击Run qmakeBuild

  5. Make arguments中输入install,再次点击Build(或Build → Rebuild

3.6 复制后端插件

即使安装成功,plugins/opcua目录可能仍为空,需手动复制。

  • 源目录:build-qtopcua-...-Release\plugins\opcua\open62541_backend.dll

  • 目标目录:D:\Qt5.15\5.15.2\msvc2019_64\plugins\opcua\

手动创建plugins\opcua文件夹,复制open62541_backend.dll

3.7 注册模块(支持QT += opcua

复制模块配置文件,让 Qt 识别opcua模块。

  • 源目录:build-qtopcua-...-Release\mkspecs\modules\

    • qt_lib_opcua.pri

    • qt_plugin_open62541_backend.pri

  • 目标目录:D:\Qt5.15\5.15.2\msvc2019_64\mkspecs\modules\

复制后重启 Qt Creator。

3.8 验证

新建 Qt Console 项目,.pro文件:

QT += core opcua CONFIG += c++17 SOURCES += main.cpp

main.cpp

#include <QCoreApplication> #include <QtOpcUa/QOpcUaProvider> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QOpcUaProvider provider; qDebug() << "Available backends:" << provider.availableBackends(); return 0; }

输出应包含("open62541")

四、常见错误及解决

错误现象原因解决方法
openssl/asn1.h: No such file or directory缺少 OpenSSL 或路径未设置安装 OpenSSL 1.1.1,在.pro中指定INCLUDEPATHLIBS,并在构建环境中添加变量
'perl' 不是内部或外部命令未安装 Perl 或 PATH 未包含安装 Strawberry Perl,添加至 PATH,重启 Qt Creator
Cannot run compiler 'cl'MSVC 环境未初始化使用开始菜单中的 “Qt 5.15.2 MSVC 2019 64-bit” 命令行
Debug 可编译,Release 失败Release 构建环境缺少 OpenSSL/Perl 路径手动为 Release 配置添加相同的环境变量
示例程序opcuaviewer.exe缺失示例未编译(不影响使用)忽略,只关注库文件和插件
自己的项目无法QT += opcua缺少模块配置文件复制*.primkspecs\modules并重启 Qt Creator

五、最终确认清单

  • Qt OPC UA 库已安装至D:\Qt5.15\5.15.2\msvc2019_64\lib\Qt5OpcUa.*

  • 后端插件open62541_backend.dll位于plugins\opcua\

  • 模块配置文件qt_lib_opcua.pri位于mkspecs\modules\

  • 测试项目输出Available backends: ("open62541")


六、参考资源

  • Qt OPC UA 官方文档:https://doc.qt.io/qt-5/qtopcua-index.html

  • OpenSSL 1.1.1w 下载:https://slproweb.com/products/Win32OpenSSL.html

  • Strawberry Perl:https://strawberryperl.com

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 9:16:21

HoRain云--Skills skill-creator 创建 Skill

&#x1f3ac; HoRain 云小助手&#xff1a;个人主页 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …

作者头像 李华
网站建设 2026/5/20 9:16:21

LibreDWG完全指南:如何在2025年高效处理AutoCAD DWG文件转换

LibreDWG完全指南&#xff1a;如何在2025年高效处理AutoCAD DWG文件转换 【免费下载链接】libredwg Official mirror of libredwg. With CI hooks and nightly releases. PRs ok 项目地址: https://gitcode.com/gh_mirrors/li/libredwg LibreDWG是一款强大的开源CAD文件…

作者头像 李华
网站建设 2026/5/20 9:11:46

移远RX500U模组的USB接口还能这么玩?从AT调试、网卡共享到ADB刷机的三种模式切换指南

移远RX500U模组的USB接口三重玩法实战手册 当你第一次拿到移远RX500U这款5G模组时&#xff0c;可能只把它当作普通的通信模块。但它的USB接口实际上是个功能强大的多面手——就像瑞士军刀的主刀片&#xff0c;通过简单配置就能切换三种完全不同的工作模式。本文将带你解锁AT命令…

作者头像 李华
网站建设 2026/5/20 9:10:24

程序员的520专属浪漫:10款神级前端爱心特效代码(附源码)

目录程序员的520专属浪漫&#xff1a;10款神级前端爱心特效代码&#xff08;附源码&#xff09;01. 纯粹的爱 —— 纯CSS跳动的心 (CSS Heart)02. 一笔一划都是你 —— 动态画心 (Frontend Draw Heart)03. 纸短情长 —— JS浪漫打字机 (JS Typewriter)04. 漫天浪漫 —— 满屏爱…

作者头像 李华