【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")


六、参考资源

相关推荐
吴声子夜歌6 小时前
ApacheCommons——commons-lang3(Java 基础语言增强)(二)
java·开发语言·apache
传奇开心果编程6 小时前
【Rust入门知识点学与练】第1课变量与打印
开发语言·学习·rust
今日热点6 小时前
Windows 系统 C 盘深度清理教程:安全释放存储空间,避开误删风险
windows·安全
磐链科技6 小时前
区块链开发入门实战:用 Hardhat 与 Ethers.js 搭建你的第一个 DApp
开发语言·javascript·区块链
csdn2015_6 小时前
java springboot项目,接收到的参数多个逗号
java·开发语言·spring boot
可乐鸡翅yeah_6 小时前
hls.js 多实例并发踩坑,多视频页面播放器内存与冲突问题解决
开发语言·前端·javascript·音视频·hls·m3u8·m3u8在线播放
俊昭喜喜里6 小时前
c#中的构造函数
开发语言·数据库·c#
gsls2008087 小时前
告别 Vault 的复杂度:用 Go 标准库给 Windows 凭据管理器装上 MCP
windows·golang·mcp
hahaha60167 小时前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
Mrs_DongDong7 小时前
华为云 Windows 服务器远程桌面自定义端口排障指南
服务器·windows·华为云