我相信我想要完成的任务相当容易,但我仍然设法遇到问题,因此我们会感激一些帮助。
我有一个基类(在标题和源文件中),我作为程序的一部分进行了两次子类化,我们称之为WorkerBase
。子类WorkerA
之一相当简单,而另一个WorkerB
依赖于依赖于运行程序的硬件的第三方库。如果硬件不合适或缺少那些库,则使用该子类会导致失败。在这种情况下,我想使用WorkerA
。
所以,基本上,我如何检测库加载失败?如果缺少库,现在主程序就无法启动。
我正在使用Qt,该程序将仅限Windows。谢谢。
答案 0 :(得分:1)
我认为,最简单的解决方案是将Woker
移动到插件中。
您可以在运行时动态加载QPluginLoader
插件。
然后,虽然WorkerB
将静态链接到第三方库,但如果WorkerB
的所需依赖项不能满足,WorkerB
插件将无法加载,您会抓住它使用QPluginLoader
并加载WorkerA
插件。
另一种方法是使用QLibrary
(和QPluginLoader
作为参考实现)重新发明你自己的插件系统>>。
答案 1 :(得分:0)
可能有帮助
http://developer.qt.nokia.com/doc/qt-4.8/qlibrary.html
bool QLibrary::load ()
加载库并在成功加载库时返回true;否则返回false。由于resolve()总是在解析任何符号之前调用此函数,因此不必显式调用它。在某些情况下,您可能希望提前加载库,在这种情况下,您将使用此功能。