QT创建第三方动态库(内部)

超级简单!!!
建一个含UI界面的主程序,含第三方的内部动态库
建成之后大致长这样
在这里插入图片描述

现在我们开始

1.先建一个含UI界面的项目

先建一个不带任何.h/.cpp的项目,我取名为Main
在这里插入图片描述
在这里插入图片描述
一直点击下一步
然后我们会来到这个界面(小窗会自动弹出),然后我们添加一个有UI界面有.h/.cpp的项目
在这里插入图片描述
这里我起名为MainApp,路径它会自动选入,默认就好
在这里插入图片描述
一直点下一步(默认)
在这里插入图片描述
一个未包含动态库的项目建好了

2.下面我们建动态库

右键点击Main(我定义的未包含任何东西的项目!!!千万别看错了!!!)->新子项目…
在这里插入图片描述
这边我取的动态库名称为CShape,路径也是自动识别,默认就好
在这里插入图片描述
点击下一步然后得到界面,此时Main项目下有两个项目文件,一个动态库CShape,一个主项目MainApp,此时它们还没连接
在这里插入图片描述
接下来在我们的MainApp里面连接我们的CShape库
右键点击MainApp(我定义的带有UI界面还有.h/.cpp的项目!!!千万别看错了!!!)->添加库
在这里插入图片描述
进入下一个页面
在这里插入图片描述
然后点击下一步->完成之后会在MainApp.pro文件出现以下语句,有这个说明我们的MainApp已经添加动态库CShape
在这里插入图片描述
接下来要构建项目
在这里插入图片描述
我们来测试一下是否添加动态库成功(没报错,且能识别到头文件)
在这里插入图片描述
到现在为止我们的内部动态库建成了!!!

Qt中,第三方可以通过静态编译和动态编译两种方式进行使用。 1. 静态编译:静态编译是指将第三方的代码编译成静态(.a或.lib文件),并将静态链接到应用程序中,生成一个单独的可执行文件。这种方式需要在.pro文件中指定要链接的静态,例如: ``` LIBS += -lmylib ``` 其中,`mylib`是要链接的静态名字。 静态编译的优点是运行时不需要动态加载第三方,提高了启动速度和效率。但缺点是可执行文件较大,不易扩展和更新。 2. 动态编译:动态编译是指将第三方的代码编译成动态库(.dll或.so文件),并在运行时通过libloaderapi函数手动加载动态库,并通过QLibrary类获取动态库中的函数地址,然后直接调用该函数。这种方式需要在代码中显式加载动态库,例如: ``` QLibrary mylib("mylib.dll"); mylib.load(); ``` 然后通过QLibrary的resolve方法获取函数地址,例如: ``` void (*myFunc)() = (void (*)()) mylib.resolve("myFunc"); ``` 其中,`myFunc`是要调用的函数名。 动态编译的优点是灵活性高,可以根据实际需要动态加载和卸载第三方,便于扩展和更新。但缺点是运行时需要动态加载第三方,影响了启动速度和效率。 需要注意的是,在使用第三方时,需要遵循一些规范和最佳实践,以确保正确性和安全性。特别是在获取函数地址时,需要确保函数名的正确性和类型匹配,否则可能导致运行时错误和安全漏洞。同时,在编译和链接时,需要遵循第三方的使用规范,以确保文件的正确链接和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值