我正在使用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部署
非常感谢您的任何建议。
主要在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部署
非常感谢您的任何建议。