Qt5多个类的建立动态库dll及调用

        先看这位写的

Qt5建立动态库及调用_CarbonPie-CSDN博客_qt如何调用动态库

        网上大部分都是这种,只有一个建立动态库工程时生成的类,那么如果我们想要再添加类怎么办呢?

方法一:把多个类写到建立动态库工程时生成的类的.h .cpp,像这样:

关键是加上

SUMSHARED_EXPORT

这个

然后按照上面的文章里的内容新建一个项目,引入dll .h 文件,调用里面的函数就行了。

方法二: 

        新建一个类

 然后运行,生成dll,把它拷贝到你的项目里面,具体步骤参考开头链接。

然后现在就可以使用了:

运行结果:

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DLL动态链接库)是 Windows 操作系统中常用的一种动态链接库文件,它包含在自己的地址空间中的代码和数据,可以被多个应用程序共享。在 Qt 中,我们可以通过 QLibrary 来加载 DLL 文件并调用其中的函数。 下面是一个简单的示例,演示如何使用 QLibrary 加载 DLL 文件并调用其中的函数。 假设我们有一个名为 "mydll.dll" 的 DLL 文件,其中包含一个名为 "add" 的函数,可以计算两个整数的和。函数原型如下: ```c++ int add(int a, int b); ``` 我们可以使用以下代码来加载 DLL 文件并调用其中的 "add" 函数: ```c++ #include <QLibrary> #include <QDebug> // 定义函数指针型 typedef int (*AddFunc)(int, int); int main() { // 加载 DLL 文件 QLibrary myDll("mydll.dll"); // 检查 DLL 文件是否成功加载 if (!myDll.load()) { qDebug() << "Failed to load DLL!"; return 1; } // 获取函数指针 AddFunc addFunc = (AddFunc) myDll.resolve("add"); // 检查函数指针是否有效 if (!addFunc) { qDebug() << "Failed to resolve function!"; return 1; } // 调用函数 int result = addFunc(1, 2); qDebug() << "Result:" << result; return 0; } ``` 在上面的代码中,我们首先使用 QLibrary 加载 "mydll.dll" 文件。如果加载成功,则我们使用 `resolve()` 方法获取 "add" 函数的函数指针。然后我们检查函数指针是否有效,如果有效,则我们可以调用该函数,并将其结果存储在变量中。 需要注意的是,我们必须使用 `typedef` 定义一个函数指针型,并将其用于声明 `addFunc` 变量。由于 DLL 文件中的函数是动态链接的,因此我们需要在运行时解析函数指针,而不是在编译时链接。 此外,需要注意的是,在 Windows 平台上,DLL 文件通常需要导出函数,以便其他应用程序可以使用它们。为了导出函数,我们需要在函数声明前面添加 `__declspec(dllexport)` 关键字,例如: ```c++ __declspec(dllexport) int add(int a, int b); ``` 这将告诉编译器将该函数导出到 DLL 文件中。在调用 DLL 中的函数时,我们需要使用与导出函数相同的函数名称。如果我们使用了不同的函数名称,可能会导致链接错误或运行时错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值