linux下qt加载dll,Qt加载lib、dll的几种方式

本文详细介绍了在Linux环境下使用Qt进行动态库加载的多种方法,包括在pro文件中指定DLL、使用QLibrary、设置库路径以及利用QPluginLoader加载插件。同时,文章提及了加载lib文件的技巧,如获取运行目录和运行环境目录来定位lib文件。
摘要由CSDN通过智能技术生成

1. 加载DLL

(1) pro种加载

LIBS+=$$PWDXXX.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!

");

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);</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt 中,你可以使用 `QLibrary` 类来进行静态和调用动态链接库(DLL)。下面是一个示例: ```cpp #include <QLibrary> // 静态 DLL QLibrary myLibrary("path/to/lib.dll"); // 检查是否成功 if (myLibrary.load()) { // 获取函数指针 typedef void (*MyFunctionType)(); MyFunctionType myFunction = (MyFunctionType)myLibrary.resolve("myFunction"); // 检查函数是否成功获取 if (myFunction) { // 调用函数 myFunction(); } else { // 函数获取失败 qDebug() << myLibrary.errorString(); } // 卸库 myLibrary.unload(); } else { // 失败 qDebug() << myLibrary.errorString(); } ``` 在上面的示例中,`path/to/lib.dll` 是你要DLL 文件的路径。首先,使用 `QLibrary` 类创建一个对象,然后使用 `load()` 方法来尝试 DLL。如果成功,可以使用 `resolve()` 方法获取 DLL 中的函数指针,并将其转换为相应的函数类型。然后,你可以通过函数指针来调用 DLL 中的函数。 请注意,如果你的 DLL 依赖于其他 DLL,你可能需要将这些依赖的 DLL 放在与可执行文件相同的目录下,或者在系统路径中可访问到。 此外,确保在编译时链接正确的库文件。在 `.pro` 文件中,使用 `LIBS` 变量来指定需要链接的库。例如: ```pro LIBS += -L"path/to/dll" -lmylib ``` 其中,`path/to/dll` 是 DLL 文件所在的路径,`mylib` 是 DLL 的名称。 通过这种方式,你可以在 Qt 中静态和调用动态链接库(DLL)的函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值