Linux下用QT创建动态库文件 .os,并调用
参考链接:https://blog.csdn.net/csdn83419527/article/details/78840798
https://blog.csdn.net/qq_40263915/article/details/104884917
======创建动态库.os文件======
1.新建工程
点击Qt Creator菜单栏“文件”-->“新建文件或项目”,选择Library,C++库,点“choose”。
一路Next下去即可,在Kits步骤也是,按照系统默认设置即可,除非自己需要改变编译等配置;直接 点“下一步”即可。
最后完成创建,如果需要进行版本控制可以进行设置,否则点“完成”即可。
2.代码实现
创建后,Qt Creator自动生成三个文件分别是XXX_global.h、XXX.h、XXX.cpp。其中XXX_global.h是一个宏定义文件,如下图所示。
注意:图中标蓝的部分,可以拷贝至XXX.h中,同时将XXX_global.h删除掉,这样项目也可以直接编译使用,不删除也没有问题,只是使用时,使用程序需要同时将XXX_global.h、XXX.h包含,否则会报找不到XXX_global.h错误。这里建议把蓝标部分复制到XXX.h文件中,这样后续调用只需要包含一个即可,标蓝部分拷贝到XXX.h中的位置如下图所示。
下面编写一个测试函数,先在头文件声明
接着在 .cpp 编写实现代码逻辑,这里实现把两个参数相加并返回。
3.编译生成 .os 库文件
编译后会弹出一个界面,不用管它,直接关闭即可
编译完成会在Release文件夹里生成的4个库文件,如下图。
到这里就已经完成 .os 库文件的创建了,为了方便后续给别调用,我们可以新建一个文件夹,把上面生成的4个库文件和XXX.h文件保存在里面,后续只需要把这个文件夹给别的项目就可以调用了。
======实现调用动态库.os文件======
1.新建立工程
建立工程这里不细说了,具体可以参考:https://www.cnblogs.com/xingboy/p/14376226.html
项目建成如下:
2.调用os库
把上面新建保存有需要用的os库文件跟.h文件的文件夹复制到,新建项目的文件夹里,然后在313kDemo处右键点击,弹出,选择Add Library。
然后选择外部库.
完成后.por文件会出现如下内容
$$PWD用于指定包含.pro文件目录的完整路径;INCLUDEPATH 指定编译项目时被搜索到的 #include 目录;LIBS指定了链接到项目中库的列表,添加的是共享库文件,-L添加目录,-l指定共享库名称(注意是共享库项目名而非共享库文件名);DEPENDPATH是程序编译时依赖的相关路径。然后我们就可以添加头文件,类似于内部定义的函数一样实现调用了。
先在项目里添加os库文件的.h文件,把保存有os文件与.h文件的文件夹里的.h文件添加进去。
然后在mainwindow.h文件里包含os库的.h文件,其实不一定在mainwindow.h文件里包含,在其他文件包含也行,这里为了方便就直接在这里包含了;然后对OS库的头文件里声明的类名进行重命名。
3.代码测试
在UI界面添加3个文本框跟一个按钮,编辑代码实现,获取两个文本款数值,调用os库里的函数,实现该函数功能,并把结果输出在另一个文本框。
选中按钮,右击转到槽,添加实现代码。
void MainWindow::on_pushButton_clicked() { int a=ui->textA->text().toInt(); //获取文本框的值 int b=ui->textB->text().toInt(); int data=mySdk.MyTest(a,b); ui->textC->setText(QString::number(data)); //把数值转为字符串输出到文本框 }
4.运行查看结果
5. 注意事项
如果你把程序与so动态链接库文件,复制出来使用,需要修改 ld.so.conf 文件,指定的动态库搜索路径,执行 sudo vim /etc/ld.so.conf 在该文件里添加你保存动态链接库的路径,直接添加即可;然后执行 sudo ldconfig 使能该文件,如果报错 is not a symbolic link 可参考我另一个博客 https://www.cnblogs.com/xingboy/p/15434271.html 解决;下面附上一段以前写的关于 Linux 怎么配置使用 QT 程序与 so 文件的环境说明:
# You use the application of aa158 that need deploy some environment when first time . Firest : If you computer without the Qt5 environment well then you need deploy the environment , that you need key in " sudo apt-get update " on the console , next key in " sudo apt-get install qt5-default " to deploy the environment , last key in " sudo apt install libqt5serialport5* -y " on the console . Sencond : You need key in " sudo vim /etc/ld.so.conf " on the console , then tack on path of applicantion in the " /etc/ld.so.conf " . Exemplify tack on " /home/aplex/Desktop/AplexAA158 " in the " /etc/ld.so.conf " . Third : You need key in " sudo ldconfig " on the console that enable it . Finally: when into the folder of application after you need key in " sudo ./AA158 " to perform the application .
本文来自博客园,作者:白菜没我白,转载请注明原文链接:https://www.cnblogs.com/xingboy/p/14378408.html