Qt加載lib、dll的幾種方式


1. 加載DLL

(1) pro種加載

LIBS+=$$PWD\XXX.dll

 

(2) QLibrary

QLibrary *libOCI = new QLibrary("F:\\oracle\\product\\10.2.0\\db_1\\bin\\oci.dll");
//加載動態庫
libOCI->load();
if (!libOCI->isLoaded())
{
    printf("Load Oracle oci.dll failed!\n");
    return 0;
}

==>Qt生成的dll可以,但外部的dll不行

 

(3) addLibraryPath

QApplication::addLibraryPath("D:/Qt/Documents/build-FaceComparison-Desktop_Qt_5_9_8_MinGW_32bit-Release/release/");

 

(4) QPluginLoader

 void MainWindow::ReadPluginsInfo( const QString & pluginsDirPath /*= ""*/ )
{
    QString pluginsPath = pluginsDirPath;
    if (pluginsDirPath.isEmpty())
    {
        pluginsPath = QApplication::applicationDirPath();
    }
    QDir pluginsDir(pluginsPath);
    pluginsDir.cd("Plugins");

    QFileInfoList pluginsFile = pluginsDir.entryInfoList(QStringList() << "*.dll", QDir::Files);
    foreach(QFileInfo fileInfo, pluginsFile)
    {
        QPluginLoader loader(fileInfo.absoluteFilePath());
        bool isLoad = loader.isLoaded();
        QString info = loader.errorString();

        if (QObject * plugin = loader.instance())
        {
            qDebug() << isLoad;
        }
        else
        {
            qDebug() << loader.errorString();
        }
    }
}

 

 

 

 

QStringList paths = QCoreApplication::libraryPaths();

 
        

 

 
        

 

2. 加載lib

 

 

//運行目錄獲取

    QString applicationDirPathStr = QApplication::applicationDirPath();
    qDebug() << "----------運行目錄獲取-------------"<<applicationDirPathStr;
 
        
    //運行環境目錄獲取
    QString applicationDirPathStr2 = QDir::currentPath();
    qDebug() << "----------運行環境目錄獲取-------------"<<applicationDirPathStr2;


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM