如何用qt在linux中编写并使用动态链接库

如何用qt在linux中编写并使用动态链接库,第1张

先写好实现动态链接库的libmy.cpp文件和libmy.h文件,如下:

// libmy.cpp

#include"libmy.h" 

#include<iostream>

using namespace std

MyLib::MyLib() 

}

MyLib::~MyLib() 

}

void MyLib::hello() 

{     

 cout <<"hello world~!" <<endl

}

// libmy.h文件

#ifndef  LIBMY_H 

#define  LIBMY_H  

class MyLib

public:     

 MyLib()     

 ~MyLib()       

 void hello() 

#endif  /*LIBMY_H*/

然后写好pro文件,如下:

TEMPLATE = lib 

TARGET =DllTest

HEADERS += libmy.h 

SOURCES += libmy.cpp

保存关闭,文件名命名为MyDll.pro

在Shell里执行qmake MyDll.pro,在没有错误的情况下,然后执行make ,可以看到生成了几个后缀名为so的文件,如下图:

证明生成动态链接库成功。然后编写测试动态链接库的主函数,如下:

#include"libmy.h" 

#include<iostream>

using namespace std

int main(int argc,char *argv[]) 

{     

       MyLib *lib = new MyLib()       // 调用刚才编写的动态链接库

       lib->hello()         

        cout <<"danshiming " <<endl

        int i

        cin >>i

       return 1 

}

编写main.pro文件,如下:

LIBS += -L ./                               # 设置程序查找动态库的目录为当前目录

# 注意:用QT生成的动态库默认都加了lib前缀和扩展名及版本名,但调用时不用加lib,不用加文件

# 扩展名so、不用加版本名1.0.0.即下面LIBS中的DllTest就是实际的动态库libDllTest.so.1.0.0

LIBS+=-lDllTest  #注意:调用时不用加lib,不用加文件扩展名so、不用加版本名1.0.0,记得前面加l(字母)

TARGET = libMyTest

SOURCES += main.cpp

执行qmake main.pro生成makefile文件,然后执行make,可以看到生成了libMyTest可执行文件。

将动态链接库libDllTest.so.1.0.0和可执行文件传到arm板上,如下:

在arm板上执行libMyTest,如下:

# chmod +x  libMyTest    // 先赋予可执行权限

执行:

#  ./libMyTest

输出如下:

/usr/local/qwt-*.*.*/include

1、使用Ubuntu的Software Center安装Qt creator;

2、下载Qwt6.0,http://sourceforge.net/projects/qwt/;并将其存放到/opt/下面;

3、按照User Guide的说明安装Qwt6.0,http://qwt.sourceforge.net/qwtinstall.html;安装完成后会在/usr/local/下面生成qwt-6.0.x文件夹;

4、将/usr/local/plugins/designer/libqwt_designer_plugin.so拷贝到/usr/share/qt4/plugins/designer/下面;

5、将qwt的共享库连接到/usr/local/lib下面,如对libqwt.so.6执行sudo ln -s /usr/local/qwt-6.0.x/lib/libqwt.so.6 /usr/local/lib/libqwt.so.6;

6、执行sudo ldconfig,以重新装载动态库;此时,在qt designer下面已经可以看到qwt的控件了;

7、接着,将/usr/local/qwt-6.0.x/include/下面的头文件拷贝到/usr/local/include/下面就可以在creator下面使用qwt了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11569849.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存