【发布时间】:2014-06-11 16:25:35
【问题描述】:
我正在使用 Qt 4.8.4 在 Mac OS 和 Windows 上编写应用程序。该程序由可执行文件和共享库/dll 组成,并使用 SQLite 驱动程序。
开发主要在 Mac OS 上完成,这是我今天主要关心的问题。
在开发/调试模式下一切正常时,Qt 从框架中的硬编码路径加载其库。
部署应用程序时,它无法从我的共享库中加载 libqsqlite.dylib 插件。应用程序和库都通过 QSqlDatabase 接口使用 SQLite。该应用程序似乎可以正常加载驱动程序,因为它读取了 qt.conf。
在部署应用程序时,其他应用程序可以使用的共享库在启动时无法加载 libqsqlite.dylib 驱动程序。
据我了解,Qt 使用 QCoreApplication 加载驱动程序,但库不使用此类。我不知道如何指示 Qt 从库中加载驱动程序,指向包中驱动程序的副本。驱动程序位于 /Contents/PlugIns/sqldrivers 中。
我尝试使用 QPluginLoader 类在库的入口点手动加载驱动程序并且加载正常,但 Qt 没有检测到内存中的驱动程序,因此它尝试再次加载它,但它照常失败。
一些细节:
- Mac OS 10.9
- 用XCode编译的Qt 4.8.4,使用两年没有问题
- 使用 macdeployqt 部署应用程序
任何建议将不胜感激。
【问题讨论】: