码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • QT(C++) + OpenCV + Python库打包发布可执行EXE


    QT(C++) + OpenCV + Python库打包发布可执行EXE

    背景

    最近写了一个操作界面,不仅用到了OpenCV的函数,还调用了一个python脚本,所以这里记录一下如何将其打包成可以在非开发环境下执行的.exe程序。

    踩坑实录

    打包过程参考了博客:

    QT+Opencv 程序打包发布(超级详细版+常见错误解决)

    但是有几个坑需要补充说明。

    一、利用windeployqt添加依赖项报错

    按照步骤在自定义文件夹下运行windeployqt,报错:Unable to find the platform plugin.

    报错原因

    是QT5.14.0版本的自身的bug。
    参考:

    [1] Qt5.14.0在Windows环境下使用Qt自带程序windeployqt发布失败提示Unable to find Platform Plugin的问题
    [2] 使用Qt 5.14.0自带的windeployqt打包程序提示Unable to find Platform Plugin的解决方法

    解决方法

    升级QT,从QT5.14.0升级为QT5.14.2。

    QT 5.14.2的下载地址及安装步骤:

    下载地址:https://download.qt.io/archive/qt/5.14/5.14.2/
    安装步骤:自行百度

    二、利用Dependencies查找程序依赖项

    原博客1中提到,使用hap-depends查找程序用到的依赖项,但是亲测hap-depends在win10系统下很卡,无法正常运行。因此,找到了Dependencies替代hap-depends。

    参考博客:
    VC++开发必备神器 – Dependencies,查看依赖库DLL,支持win10,比depends更好用

    Dependencies下载地址:https://github.com/lucasg/Dependencies

    三、添加Python库

    因为要打包的文件调用了Python脚本,因此,还需要在文件夹下添加Python库函数和.dll文件。

    步骤
    1. 在test文件夹下创建Python37文件夹(其中37代表了Python的版本,如果是使用其他版本的Python,可以使用其他数字替代);
    2. 将Python安装路径下的:
      • DLLs
      • include
      • Lib
      • libs
      • python3.dll
      • python37.dll
      • vcruntime140.dll
        复制到Python37文件夹下;
        注意:这里如果是使用Anaconda安装的Python,则直接拷贝 Anaconda文件夹下的这些文件夹及.dll文件,而不是conda创建的虚拟环境下的文件(不要拷贝"../Anaconda/envs/../"路径下的文件)。
    3. 将调用的python脚本添加至test文件夹下;
    4. 在程序中,添加语句:
    // 指定python库地址
    Py_SetPythonHome((wchar_t *)(L"./Python37"));
    
    • 1
    • 2

    重新在release模式下编译生成.exe文件后,copy至test文件夹中即可。


    1. https://blog.csdn.net/qq_43599883/article/details/106251915 ↩︎

  • 相关阅读:
    Python大数据之PySpark(八)SparkCore加强
    30天Python入门(第二十八天:深入了解Python API的使用)
    【node进阶】深入浅出前后端身份验证(下)---JWT
    asp毕业设计——基于asp+access的校园网物品交易平台设计与实现(毕业论文+程序源码)——校园网物品交易平台
    Dive into TensorFlow系列(1)-静态图运行原理
    爱了爱了,这是什么神仙级Apache Dubbo实战资料,清晰,齐全,已跪
    bim翻模教程:如何控制revit中的填充图案和构件显示隐藏
    [iOS]-KVO+KVC
    asp+sqlserver记录
    mysql5.6.50物理迁移后root登录不显示mysql库和业务库
  • 原文地址:https://blog.csdn.net/qq_34554039/article/details/127731455
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号