Qt 4.8:从共享库/DLL加载SQL驱动程序

3
我正在使用Qt 4.8.4在Mac OS和Windows上编写应用程序。该程序由一个可执行文件和一个共享库/dll组成,并使用SQLite驱动程序。
主要在Mac OS上进行开发/调试,这是我今天关心的主要问题。
在开发/调试模式下,一切正常,Qt从Frameworks中的硬编码路径加载其库。
在部署应用程序时,它无法从我的共享库加载libqsqlite.dylib插件。应用程序和库都通过QSqlDatabase接口使用SQLite。应用程序似乎可以正确加载驱动程序,因为它读取了qt.conf。
在启动时部署应用程序时,其他应用程序可以使用的共享库无法加载libqsqlite.dylib驱动程序。
据我了解,Qt使用QCoreApplication加载驱动程序,但库不使用这样的类。我无法弄清楚如何指示Qt从库中加载驱动程序,指向包中驱动程序的副本。驱动程序位于/Contents/PlugIns/sqldrivers中。
我尝试在库的入口点手动加载驱动程序,使用QPluginLoader类进行加载工作,但Qt无法检测到内存中的驱动程序,因此尝试再次加载并像往常一样失败。
一些细节:
- Mac OS 10.9 - Qt 4.8.4使用XCode编译,已使用两年没有问题 - 应用程序使用macdeployqt部署
非常感谢您的任何建议。
1个回答

0
你应该把 libqsqlite.dylib 放在一个名为 sqldrivers 的文件夹里,与应用程序可执行二进制文件放在一起。同时确保将 libQtSql.dylib 放在应用程序二进制文件的旁边。

已经完成了,但是它不起作用。程序看到了它,但库没有看到它。我查看了Qt代码,发现需要一个QCoreApplication对象来加载SQL插件。共享库/DLL没有QCoreApplication,因此必须有一种替代方法。 - pluginmaker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接