我已经构建了一个使用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使用二进制发行版。相反,我已经开始使用源qt-无处不在-开放源码-src-4.7.4是正确的方式来做一个静态构建,以便我可以使用静态MySql插件?
配置-static -调试和发布-opensource -platform lib 32-MySQL 2010-no-qt3支持-无webkit-无脚本-插件-sql-MySQL -I C:\MySQL\包括-L C:\MySQL\lib
谢谢你让我不困惑!
发布于 2011-11-25 07:11:14
你的第二句话的那一页应该说:
静态链接导致独立的可执行文件。优点是您只需要部署几个文件。缺点是可执行文件很大,没有灵活性,无法部署插件。
要部署基于插件的应用程序,可以使用共享库方法而不是。
你对这两个假设都是对的。例如,qt版本的配置包括
-plugin-sql-oci -qt-sql-sqlite而plugins\ sqlite驱动程序目录只显示sqldrivers(D).lib,而不显示sqlite相关的任何内容。
https://stackoverflow.com/questions/8263296
复制相似问题