如何使用 oracle 插件部署基于 qt 的应用程序

Posted

技术标签:

【中文标题】如何使用 oracle 插件部署基于 qt 的应用程序【英文标题】:how to deploy qt based application with oracle plugin 【发布时间】:2010-11-01 08:29:36 【问题描述】:

刚刚使用 OCI 插件编写了基于应用程序的 QT,但我无法部署它。 我做了以下步骤:

    已安装 QT 4.7 SDK

    安装了 OCI 插件:

    设置 INCLUDE=%INCLUDE%;c:\oracle\oci\include

    设置 LIB=%LIB%;c:\oracle\oci\lib\msvc

    cd %QTDIR%\src\plugins\sqldrivers\oci

    qmake -o Makefile oci.pro

    nmake

    我跟着:“使用 MSVC 在 Windows 上构建静态 Qt” 编辑了 \mkspecs\win32-X\qmake.conf:

    QMAKE_CFLAGS_RELEASE = -O2 -MT

    CONFIG += qt warn_on 发布增量平面链接_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target

    然后在 Qt 目录上:

    配置-静态-发布

    nmake 子源代码

    我不确定接下来的步骤,但我在我的应用程序目录中运行:

    qmake -o Makefile myProgram.pro

    nmake

我在发行版中获得了 .exe 文件,但我收到错误提示未加载 OCI 驱动程序... 请帮助我, 我所做的任何步骤都没有错误

【问题讨论】:

【参考方案1】:

你不应该先编译你的 Qt 的静态版本,然后再编译 OCI 插件吗?您也可以通过设置适当的配置开关 -qt-sql-oci 并添加所需的包含和库目录来一步完成。

因为,在您的场景中,您使用哪个 qmake 来编译您的 OCI 插件?您打算用于您的应用程序的静态的尚未构建。因此,您的 OCI 插件似乎是使用一个 Qt 版本构建的,而您的应用程序使用另一个(静态)Qt 版本。这种不匹配很可能是您的问题的原因。

另外,当使用静态插件时,您必须使用Q_IMPORT_PLUGIN 宏。更多详情请看这里http://doc.qt.io/archives/qt-4.7/plugins-howto.html#static-plugins

根据要求,这里分步说明它应该如何工作:

    为您的静态 Qt 版本提取 qt 源代码,比如 C:\Qt\4.7.0-static

    按照您已经做的方式更改 qmake.conf。

    在您的 Visual Studio 命令行中,将目录更改为 C:\Qt\4.7.0-static 并执行以下操作:

    配置 -static -release -qt-sql-oci -I C:\oracle\oci\include -L c:\oracle\oci\lib\msvc

    做一个nmake sub-src

    然后,将您用于应用程序的 qt 版本更改为刚刚编译的版本,并从 QtCreator 的构建菜单中执行“运行 qmake”和“重建项目”(当您安装 Qt SDK 时,我假设你正在使用它)

    希望它现在可以工作 - 使用 -qt-sql-oci 开关会导致 oci 驱动程序的静态构建。

【讨论】:

你能描述一下我应该采取的步骤吗?抱歉,我只是遇到了太多问题......挖掘信息:( 当我尝试从 Visual Studio 命令提示符运行以下命令时:configure -static -release -qt-sql-oci -I C:\oracle\oci\include -L c:\oracle\ oci\lib\msvc 我收到以下错误:'configure' 不被识别为内部或外部命令、可运行程序或批处理文件。 确保您更改到正确的目录,例如。 C:\Qt\4.7.0-static\ 取决于您的设置,就像您在步骤 4 中的描述中所做的那样。 在 C:\Qt\4.7.0-static\ 我只有我的项目源文件我在 C:\Qt\2010.05\qt 中有 configure.exe 您需要下载一个单独版本的 Qt lib 并使用上面指定的参数构建它。 C:\Qt\2010.05\qt 中的版本是 MinGW 预编译的非静态版本。如果你在没有进行 confclean 的情况下将它作为静态版本重新编译,你很可能把它搞砸了。所以最好的办法是重新安装 sdk,获取一个单独版本的 Qt lib 并使用 -qt-sql-oci 选项将其编译为静态。

以上是关于如何使用 oracle 插件部署基于 qt 的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何将基于 qt 的应用程序(在 Mac 上开发)部署到 Windows?

macdeployqt 不复制插件

Linux Mint x64:Qt 5.3.1 插件部署:不兼容的 qt 库

部署的 Qt 应用程序未列出可用的打印机

如何在 Android 上部署 Qt imageformats 插件

Oracle MAF:使用 cordova 插件时出现部署错误