#pragma warning( push ,0) #include #include #include #include #include #include "ObjectGenralFactory.h" // #include "error.h" #include #pragma warning( pop ) BEGIN_OSGDATAMODEL_NAMESPACE; OSGDATAMODEL_EXPORT QStringList LoadAllPlugin(const QString &PluginTypeName) { QStringList dllnames; //加载插件的目录 QStringList listFolder; { QString strPathTmp = QCoreApplication::applicationDirPath() + QDir::separator(); //listFolder << strPathTmp; listFolder << strPathTmp+ PluginTypeName+ QDir::separator(); } //遍历加载所有的plugin 插件 for( long iFolder = 0 ; iFolder < listFolder.size();++iFolder ) { QDir dir(listFolder[iFolder] ); QFileInfoList listDllFile = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot); std::string errormsg=""; for (int j = 0; j < listDllFile.size(); ++j) { QString strDllPath = listDllFile[j].filePath(); //加载插件 QLibrary Library( strDllPath ); if(Library.isLibrary(strDllPath)){ bool bLoaded = Library.load(); if(!bLoaded) errormsg="加载插件出错:["+PluginTypeName.toStdString()+"]"+strDllPath.toStdString()+"错误原因:"+Library.errorString().toStdString()+"\n"; else dllnames.append(strDllPath); } } if(errormsg!="") { QMessageBox::warning(NULL,"提示",errormsg.c_str()); } } return dllnames; } END_OSGDATAMODEL_NAMESPACE