我有2个Qt插件,main和helper,加载helper.dll
。当main.dll
和helper.dll
位于同一文件夹中时,我可以成功加载main.dll
和QPluginLoader
。当helper.dll
不存在,并且我尝试加载main.dll
时会抛出异常。这是可以理解的原因helper.dll
找不到。我的任务是成功捕获抛出的异常,而不是崩溃应用程序。虽然这里的调试是什么Qt Creator中显示:处理由QPluginLoader :: load()抛出的异常:
下面的代码是不是解决这个问题,所以我需要做些别的事情...
std::exception_ptr eptr;
QPluginLoader pluginLoader(packagePath);
try
{
pluginLoader.load();
}
catch(...)
{
eptr = std::current_exception();
}
我想你在main.dll中找不到helper.dll或者没有找到这个异常?你如何加载helper.dll?以某种方式使用Qt框架或...? – Radek
@Radek,我没有抛出异常。我调用QPluginLoader的instance()的时候就是抛出异常的东西。我无法抓住它,因此我的应用程序崩溃。我加载main.dll,但main.dll内部使用helper.dll。 – armanali
它是有道理的,因为AFAIK Qt不会引发异常。比'load()'返回的布尔值更有趣。我认为这个问题将在加载helper.dll的main.dll的一部分。对我来说,它看起来像是OS API的一个例外,因为你无法捕捉它,这很奇怪。 – Radek