zoukankan      html  css  js  c++  java
  • 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.运行查看结果

      

      

  • 相关阅读:
    Windows Server 2003 R2 IIS服务的命令行方式重启命令
    DWZ学习记录--关闭loading效果
    td顶部对齐
    struts2 iterator 迭代标签只显示前五条记录
    struts2 select 默认选中
    struts2 select标签
    s:select 标签中list存放map对象的使用
    struts2中<s:select>标签的使用
    eclipse在Windows7 64 位下出现Unhandled event loop exception No more handles
    Jquery焦点图/幻灯片效果 插件 KinSlideshow
  • 原文地址:https://www.cnblogs.com/xingboy/p/14378408.html
Copyright © 2011-2022 走看看