Проблема возникает, когда я пытаюсь выгрузить загруженный плагин и загрузить новый. Таким образом, оба плагина загружаются правильно, но при их переключении (сначала загружается, второй разгружается и наоборот) мое приложение падает. В чем проблема?Выгрузить плагин в Qt
Сначала я пытаюсь выгрузить плагин, сохраненный в QList QPluginLoader, затем я проверяю (depdend на id (целое число), переданное из специального меню для загрузки плагинов), какой плагин загружается. Первая нагрузка хорошо (первый плагин загружен, ничего в этот момент не выгрузить), вторую загрузку (выгрузки первого плагина, второй загружен), на третьей нагрузке я получаю аварию
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;
}
}
Где крах? – Macke
внутри петли forech –
Каков тип 'plugins' в' foreach (QPluginLoader * pluginLoader, плагины) '? – cgmb