【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 qmake → Build

  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 中指定 INCLUDEPATH 和 LIBS,并在构建环境中添加变量
'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 缺少模块配置文件 复制 *.pri 到 mkspecs\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")


六、参考资源

相关推荐
龙亘川3 分钟前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人8 分钟前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
Raas10044 分钟前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
BIBI20491 小时前
换 Git 托管平台怎么做?基于 TortoiseGit 的跨平台迁移教程
windows·git·tortoisegit·问题解决·版本控制·最佳实践
chushiyunen1 小时前
autoHotKey、windows自动化快捷键工具
运维·windows·自动化
专注仿真2 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
jimy12 小时前
C++ 中的 `T&&`:右值引用与转发引用
开发语言·c++
呆呆虫123 小时前
用 orjson 加速 SerpBase 响应解析:基准对比与注意事项
开发语言·php
燃烧的枫3 小时前
Windows 下 YOLO11 Det 的 TensorRT C++ 部署
pytorch·windows·tensorrt·关键点识别·yolo11
心疼你的一切3 小时前
Python自动发邮件实战定时发报表
大数据·开发语言·python