Das Problem tritt auf, wenn ich versuche, ein geladenes Plugin zu entladen und ein neues zu laden. Also werden beide Plugins korrekt geladen, aber beim Wechsel (zuerst wird geladen, zweite wird entladen und umgekehrt) stürzt meine App ab. Was kann das Problem sein?Unload Plugin in Qt
Zuerst was ich tue Ich versuche, ein in einer QList von QPluginLoader gespeichertes Plugin zu entladen, dann überprüfe ich (depedend auf id (integer number) aus einem speziellen Menü zum Laden von Plugins) welches Plugin geladen werden soll. Erste Last ist gut (erstes Plugin geladen ist, nichts an dieser Stelle zu entladen), die zweite Last (entladen erste Plugin wird das zweite geladen), an der dritten Last i bekommen Absturz
void MainWindow::loadPluginUsingId (int plugin_id) {
foreach (QPluginLoader* pluginLoader, plugins) {
pluginLoader->unload();
delete pluginLoader;
}
switch (plugin_id) {
case 0 : {
foreach (QString fileName, pluginDir.entryList(QDir::Files)) {
if (fileName == fullNameOfPlugins.value(plugin_id)) {
QPluginLoader* pluginLoader = new QPluginLoader(pluginDir.absoluteFilePath(fileName));
QObject *plugin = pluginLoader->instance();
IndicatorInterface *indicator = qobject_cast<IndicatorInterface*>(plugin);
indicator->initIndicator();
plugins.append(pluginLoader);
}
}
}
break;
case 1 : {
foreach (QString fileName, pluginDir.entryList(QDir::Files)) {
if (fileName == fullNameOfPlugins.value(plugin_id)) {
QPluginLoader* pluginLoader = new QPluginLoader(pluginDir.absoluteFilePath(fileName));
QObject* plugin = pluginLoader->instance();
PlotterInterface *plotter = qobject_cast<PlotterInterface*>(plugin);
plotter->initPlotter();
plugins.append(pluginLoader);
}
}
}
break;
default :
break;
}
}
Wo ist der Absturz? – Macke
innerhalb der Forech-Schleife –
Was ist der Typ von 'Plugins' in' foreach (QPluginLoader * pluginLoader, Plugins) '? – cgmb