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

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


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

你可能感兴趣的:(QT编程,qt,c++,opencv,python)