首页 文章

Qt静态构建与静态mysql插件混淆

提问于
浏览
3

我已经构建了一个使用MySQL库的Qt应用程序,但我对静态与共享构建的文档感到困惑 .

http://doc.qt.nokia.com/4.7/deployment-windows.html的Qt文档中可以看出:

要部署基于插件的应用程序,我们应该使用共享库方法 .

http://doc.qt.nokia.com/4.7/deployment.html,它说:

静态链接会生成独立的可执行文件 . 优点是您只需要部署一些文件 . 缺点是可执行文件很大且没有灵活性,您无法部署插件 . 要部署基于插件的应用程序,可以使用共享库方法 .

但是在http://doc.qt.nokia.com/latest/plugins-howto.html上,似乎反过来说明了如何使用静态插件:

插件可以静态链接到您的应用程序 . 如果您构建Qt的静态版本,这是包含Qt预定义插件的唯一选项 . 使用静态插件使部署不易出错,但缺点是如果没有完全重建和重新分发应用程序,就无法添加插件功能 . ...要静态链接这些插件,您需要在应用程序中使用Q_IMPORT_PLUGIN()宏,并且需要使用QTPLUGIN将所需的插件添加到构建中 .

我想静态构建Qt库(以便于部署),然后使用静态MySQL插件 . 为此,我没有使用Windows的二进制distrubtion . 相反,我已经开始使用源qt-everywhere-opensource-src-4.7.4以下是正确的方法来进行静态构建,以便我可以使用静态MySql插件吗?

configure -static -debug-and-release -opensource -platform win32-msvc2010 -no-qt3support -no-webkit -no-script -plugin-sql-mysql -I C:\ MySQL \ include -L C:\ MySQL \ lib

  • 这应该静态构建Qt库和静态插件在运行时链接,对吗?我不需要单独从源代码构建Mysql插件,对吗?

  • 如果我在上面为“-plugin-sql-mysql”替换“-qt-sql-mysql”,它会直接在QT静态库中包含MySQL驱动程序,在这种情况下我不需要使用插件什么,对吗?

谢谢你让我失败了!

1 回答

  • 2

    第二个引用的页面应该说明:

    静态链接会生成独立的可执行文件 . 优点是您只需要部署一些文件 . 缺点是可执行文件很大且没有灵活性,您无法部署插件 . 要部署基于插件的应用程序,可以使用共享库方法 .

    你对最终做出的两个假设都是正确的 . 例如,我们的qt版本的配置包括

    -plugin-sql-oci -qt-sql-sqlite
    

    而plugins \ sqldrivers目录只显示qsqloci(d).lib但没有sqlite相关 .

相关问题