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