9

QT上位机开发(动态库dll的开发)

 8 months ago
source link: https://blog.csdn.net/feixiaoxing/article/details/135408434
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        有的时候,我们不想把所有的代码都放在一个exe里面,这个时候我们就需要引入dll动态库的概念。在windows平台上面,这个动态库就是dll文件,在linux平台上面,这个动态库就是so文件。不管是哪一种形式,它们的运行方式都是差不多的,那就是执行文件调用到具体函数的时候,才会跳到动态库执行。dll还有一个好处,那就是可以帮助我们提炼函数、类接口,实现程序的动态加载。这样软件除了问题之后,不需要重新编所有的代码,只需要更新指定的dll文件就可以。

        今天我们在编写qt软件的时候,正好也可以学习下在cpp下,函数和类是怎么做到dll里面的,且能被外面的代码调用。

1、创建一个qt widget项目

        和之前一样,创建一个qt widget项目,这个项目只是为了演示。不需要用widget在里面添加任何的内容。

2、在当前的solution里面添加一个dll项目

        直接选择solution、添加、新建项目,选择动态链接库,确认就好。这样一个dll项目就被添加到这个项目里面来了。

a090750c808a4eb3902c00e86b2f66d6.png

3、添加导出函数代码

        为了测试,我们添加一个测试函数。函数的话,按照正常的方法编写就可以了。不过有两个地方需要注意下,第一,就是需要添加一个extern "C";第二,就是添加_declspec(dllexport)。这样后续的exe文件,就可以看到这个被export出去的函数了。

4、添加导出类代码

        除了函数,还有一些类也是要被导出来的,其实也是一样。不过和函数相比较,类如果需要导出的话,只需要添加一个_declspec(dllexport)就好了。

5、添加导出全局变量

6、在exe可执行文件中添加函数和类的引用

        前面我们在dll当中已经实现了需要导出的函数和类。那么在exe当中如果需要使用这些类和函数的话,也需要添加相关的代码,比如像这样,

7、先编译dll,然后在exe中引入dll

        代码准备好了之后,就可以先编译dll。因为编译好了之后,就可以把dll库导入到exe项目当中去了。

0010e573b9b0401db913ba21b915fb11.png

8、exe项目中添加代码,开始测试

        所有条件都准备好了,就可以添加代码测试了,

        测试的时候,可以添加断点,比如iterate是不是可以单步调试?单步调试的时候会不会跳到dll工程去?parent实例化是否成功?实例化的时候,是否可以跳到构造函数去?display类函数是不是可以执行到,是不是可以跳到dll里面去等等?这些问题都可以通过单步调试来进行处理和验证。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK