Ubuntu+Qt Creator开发.so文件及调用

Ubuntu+Qt Creator 3.0.1(Base on Qt5.2.1 GCC 4.8.2.32Bit).so文件的制作与调用

全部源码下载地址:

https://download.csdn.net/download/xjzdr/15544581

 

开发环境:

 

1、创建动态链接库:项目名称:MyubuntuLib

保存路径:/root/MyQtDemo

 

新建一个Qt Creator项目,Libraries -> C++ Library,类型为Shared Library,一路Next。

 

 

 

 

 

 

 

 

  1. 编写自己的函数:

在文件myubuntulibaa.h中添加申请并对外开放。

extern "C" {

MYUBUNTULIBSHARED_EXPORT int myAdd(int x, int y);

MYUBUNTULIBSHARED_EXPORT int myAdd2();

}

注意:MYUBUNTULIBSHARED_EXPORT与类的名称是一样的。

 

然后在文件myubuntulibaa.cpp中添加实现:

int myAdd(int x,int y)

{

 

    return x+y;

 

}

 

int myAdd2()

{

 

    return 3;

 

}

 

编译后,自成.so文件:libMyubuntuLib.so(前面会自动加lib3个字母)。如下图:

 

2、动态调用.so文件

 

创建项目名称:QLibraryStaticUse

 

 

 

 

 

 

同Windows环境下一样,添加引用:

#include <QLibrary>

#include <QDebug>

 

 

添加一个按钮,然后在按钮的Click函数下添加如下代码:

void MainWindow::on_pushButton_clicked()

{

QLibrary lib("libMyubuntuLib");//可以带后缀,也可以不写后缀,

//可以用libMyubuntuLib、MyubuntuLib、libMyubuntuLib.so、MyubuntuLib.so

         // 加载共享库

         if (lib.load()) {

 

             typedef int (*AddFunction)(int, int);        //

             // 解析符号

             AddFunction add = (AddFunction) lib.resolve("myAdd");

             if (add) {

                 int result = add(9, 5);

                 qDebug() << result;

             }

             else {

                 qDebug() << "Can not resolve subtract333";

             }         // 卸载共享库

             lib.unload();

         }

         else

         {

             qDebug() << lib.errorString();

         }

}

代码截图:

 

运行结果:

 

找不到.so文件的解决办法:

"Cannot load library libMyubuntuLib: (libMyubuntuLib: cannot open shared object file: No such file or directory)"

 

网上的解决办法很多,大体上有几种 :

  1. 将libMyubuntuLib.so文件的路径添加环境变量

 

在QT的Project里面添加一个环境变量:

LD_LIBRARY_PATH,值设置为::/root/MyQtDemo/build-MyubuntuLib-Desktop-Debug

(即libMyubuntuLib.so所在的路径)

添加后的截图:

 

经测试:添加环境变量后,即可立即生效,不需要重新启动,。

 

  1. 将libMyubuntuLib.so文件拷贝到系统查找的路径下面
  2. .so文件路径的目录添加到/etc/ld.so.conf

前面的2种没有试成功。最后一种成功了,也是网上推荐的办法:

 

运行:gedit /etc/ld.so.conf

在文件最后添加一行:

include /root/MyQtDemo/build-MyubuntuLib-Desktop-Debug

 

网上资料说的:添加并保存后执行的命令,使配置生效:

/sbin/ldconfig

经测试执行此命令后,并没有立即生效。我是reboot后生效了。

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 在Ubuntu系统上,使用Qt和OpenCV可以实现人脸识别功能。需要先安装Qt和OpenCV的相关库文件,并在Qt中创建一个新的项目。在项目中导入OpenCV库,并在程序中编写人脸识别算法。可以使用OpenCV提供的CascadeClassifier类对人脸进行识别,并将识别结果显示在Qt界面上。 在识别人脸之前,需要训练一个识别器。可以使用OpenCV提供的train\_cascade工具进行训练,先准备一些包含人脸的正样本图片和一些不包含人脸的负样本图片,在训练过程中,识别器会不断调整参数,直到达到最佳识别效果。 在Qt界面上,可以使用QImage类加载图片,并使用QLabel类显示图片和人脸识别结果,也可以使用QPainter类对图片进行绘制,标出人脸的区域。为了提高识别准确率,可以对人脸图像进行预处理,如灰度化、直方图均衡化等操作。 总的来说,利用Ubuntu系统中的Qt和OpenCV库,实现人脸识别功能是一件相对容易实现的任务,唯一需要注意的是算法的准确性和效率,需要利用更高级的算法来提高识别的准确率和效率。 ### 回答2: 在Ubuntu操作系统下,结合QT和OpenCV可以实现人脸识别功能。首先需要安装OpenCV和QT库,可以通过在终端输入命令sudo apt-get install opencv以及sudo apt-get install qt5-default来完成安装。 在QT Creator中新建一个项目,选择QT Widgets Application,然后在主窗口中添加一个按钮和一个标签,作为启动和显示人脸识别结果的界面。然后在该项目文件中添加OpenCV库文件,在项目中添加头文件#include<opencv2/opencv.hpp>。 接下来,需要编写人脸识别程序的代码,使用opencv中的cv::CascadeClassifier类进行人脸检测和识别。首先需要加载训练好的人脸分类器分类器的xml文件,可通过以下代码完成:cv::CascadeClassifier faceCascade;faceCascade.load("haarcascade_frontalface_alt.xml"); 在QT程序中添加启动人脸识别的槽函数,可以使用QT预设的信号和槽机制实现按钮单击后运行人脸识别程序。槽函数中调用OpenCV函数,用分类器进行人脸检测和识别,并把结果输出到QT程序中的标签对象上。 最后编译和运行程序,当单击按钮后,程序即可开始运行人脸识别功能,对抓取的图像进行实时分析和识别。注意,在命令行设置摄像头参数时要注意摄像头分辨率和帧率的设置,以保证识别效果和程序运行流畅。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xjzdr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值