当前位置: 首页 > news >正文

内蒙古建信建设有限公司网站外贸seo是什么意思

内蒙古建信建设有限公司网站,外贸seo是什么意思,夹江发布app,网站关键词优化怎么做的Qt创建SDK库(dll动态库)并调用SDK库(dll动态库) 一、项目场景 在日常的项目中,我们经常会遇到调用别人的数学库、线程库、图形库等操作。这些库通常就被称为SDK,SDK全称是Software Development Kit(软件开发工具包),…

Qt创建SDK库(dll动态库)并调用SDK库(dll动态库)

一、项目场景

在日常的项目中,我们经常会遇到调用别人的数学库、线程库、图形库等操作。这些库通常就被称为SDK,SDK全称是Software Development Kit(软件开发工具包),是软件开发中用到的开发工具集合。

SDK通常就是封装为单一功能的功能库,比如语音识别SDK。

 很早之前,API的集合也被称之为SDK。

在windows系统中,DLL库提供了API函数的声明和导入库(.lib),而SDK也是提供windows下程序开发所需的文件和工具的“工具包”,SDK包含了使用API所需的资料,所以通常也罢使用API编程来编写windows应用程序的开发方式叫做SDK编程。

二、静态链接库和动态链接库

静态链接库和动态链接库的区别,主要是依照调用方式来区分的,即静态链接和动态连接:

  • 静态连接:指在创建应用程序的时候,将库集成进去,这样做的好处就是应用程序包自身可以独立运行,而不好的地方就是包会略显臃肿,库不能共享(静态库,windows 下以 .lib 结尾、linux 下以 .a 结尾);
  • 动态连接:创建应用的时候只约定好与库之间的调用关系,而不彻底将库包集成进应用。这样在应用运行时,需要运行环境中提供库,并且连接装载。但由于本身不集成库内容,会比较小,同时也为和其他应用共享库的使用提供了可能(动态库是windows 下以 .dll 结尾、linux 下以 .so 结尾)。

1、静态库

静态库链接时会被完整的复制到可执行文件中,所以如果两个程序都用了某个静态库,那么每个二进制可执行文件里面,都会含有这份静态库的代码;

2、动态库

动态库链接时不复制,而是在程序启动后动态加载,然后再进行符号决议(符号绑定)。理论上动态库只存在一份就可以了。其他的程序都可以动态链接到这个动态库上面,从而节省内存(内存中只有一份动态库)。另外一个好处是,由于动态库并不绑定到可执行程序上,所以我们想升级这个动态库就很容易,windows和linux上面一般插件和模块机制都是这样实现的。

3、优缺点对比

静态库动态库
优点1. 目标程序没有外部依赖,直接就可以运行。2. 效率较动态库高。1. 不需要拷贝到目标程序中,不会影响目标程序的体积。2. 同一份库可以被多个程序使用(因为这个原因,动态库也被称作共享库)。3. 编译时才载入的特性,也可以让我们随时对库进行替换,而不需要重新编译代码。实现动态更新
缺点1. 会使用目标程序的体积增大。1. 动态载入会带来一部分性能损失(可以忽略不计)2. 动态库也会使得程序依赖于外部环境。如果环境缺少动态库或者库的版本不正确,就会导致程序无法运行(Linux lib not found 错误)。

三、Qt下动态库的创建

1、打开Qt Creator,点击“新建文件或项目”

选择一个模板,“Library”->C++库->"Choose..."

 类型选择“共享库”,名称中输入exampleDLL,

 Kits选择:

可以看到创建的项目:

我们在exampledll.h头文件编写示例代码:

#ifndef EXAMPLEDLL_H
#define EXAMPLEDLL_H#include "exampledll_global.h"class EXAMPLEDLLSHARED_EXPORT ExampleDLL
{public:ExampleDLL();int add(int a, int b);int subtract(int a, int b);int multiply(int a, int b);int divide(int a, int b);
};#endif // EXAMPLEDLL_H

在exampledll.cpp文件中编写实现代码:

#include "exampledll.h"ExampleDLL::ExampleDLL()
{
}int ExampleDLL::add(int a, int b)
{return ( a + b );
}int ExampleDLL::subtract(int a, int b)
{return ( a - b );
}int ExampleDLL::multiply(int a, int b)
{return ( a * b );
}int ExampleDLL::divide(int a, int b)
{return ( a / b );
}

release模式下,编译成功后,可以在release文件夹下面看到生成的exampleDLL.dll和exampleDLL.lib,至此,动态库编译就结束了,下面我们开始调用。

四、Qt下动态库的调用

通过上面的一步,我们完成了动态库的创建,现在我们开始调用创建的动态库。

1、使用Qt Creator创建一个控制台程序,callExampleDLL。

2、把上面编译后的exampleDLL.dll拷贝到callExampleDLL工程release文件夹下

 3、把上面编译后的exampleDLL.lib和exampledll.h、exampledll_global.h。拷贝到callExampleDLL工程目录下:

 4、在callExampleDLL项目中把exampledll.h、exampledll_global.h头文件添加进来:

5、在pro文件中添加:

LIBS += -L$$PWD -lexampleDLL

在代码中需要包含要调用的头文件。

具体的调用代码如下所示:

#include <QCoreApplication>
#include <QDebug>
#include "exampledll.h"int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);ExampleDLL example;int a1 = 10;int b1 = 5;qDebug()<<"test call dll.";qDebug()<<"a1 + b1 = "<<example.add(a1,b1);qDebug()<<"a1 - b1 = "<<example.subtract(a1,b1);qDebug()<<"a1 * b1 = "<<example.multiply(a1,b1);qDebug()<<"a1 / b1 = "<<example.divide(a1,b1);return a.exec();
}

五、demo运行结果

我们看下调用的效果:

上一篇:

下一篇:

本文原创作者:冯一川(ifeng12358@163.com),未经作者授权同意,请勿转载。


文章转载自:
http://ratling.sLnz.cn
http://fress.sLnz.cn
http://granulous.sLnz.cn
http://pollywog.sLnz.cn
http://deviltry.sLnz.cn
http://humoresque.sLnz.cn
http://adiaphoretic.sLnz.cn
http://dysteleological.sLnz.cn
http://camaron.sLnz.cn
http://fern.sLnz.cn
http://quackishness.sLnz.cn
http://atypical.sLnz.cn
http://consubstantiate.sLnz.cn
http://favourably.sLnz.cn
http://aether.sLnz.cn
http://varicocele.sLnz.cn
http://contestable.sLnz.cn
http://cenogenetic.sLnz.cn
http://paterson.sLnz.cn
http://pukkah.sLnz.cn
http://inamorato.sLnz.cn
http://drillship.sLnz.cn
http://fine.sLnz.cn
http://smith.sLnz.cn
http://ko.sLnz.cn
http://keyer.sLnz.cn
http://hooker.sLnz.cn
http://goldfield.sLnz.cn
http://portion.sLnz.cn
http://ogaden.sLnz.cn
http://unscale.sLnz.cn
http://zeugmatography.sLnz.cn
http://oncidium.sLnz.cn
http://bloodmobile.sLnz.cn
http://communistic.sLnz.cn
http://wfb.sLnz.cn
http://okka.sLnz.cn
http://frutescose.sLnz.cn
http://impatiently.sLnz.cn
http://rightabout.sLnz.cn
http://neandertal.sLnz.cn
http://pentose.sLnz.cn
http://menacingly.sLnz.cn
http://twofold.sLnz.cn
http://rewater.sLnz.cn
http://undound.sLnz.cn
http://sonnet.sLnz.cn
http://anima.sLnz.cn
http://fdic.sLnz.cn
http://forgetfully.sLnz.cn
http://japanize.sLnz.cn
http://adenoids.sLnz.cn
http://winchman.sLnz.cn
http://drawnet.sLnz.cn
http://trestle.sLnz.cn
http://negrophobia.sLnz.cn
http://leptoprosopic.sLnz.cn
http://guatemala.sLnz.cn
http://tetrode.sLnz.cn
http://petrinism.sLnz.cn
http://circumrotation.sLnz.cn
http://carrageen.sLnz.cn
http://quartermaster.sLnz.cn
http://superscalar.sLnz.cn
http://euphonic.sLnz.cn
http://baoding.sLnz.cn
http://rq.sLnz.cn
http://ceorl.sLnz.cn
http://buskined.sLnz.cn
http://baize.sLnz.cn
http://situated.sLnz.cn
http://agony.sLnz.cn
http://lxx.sLnz.cn
http://tapa.sLnz.cn
http://gangtok.sLnz.cn
http://aequum.sLnz.cn
http://hemimorphic.sLnz.cn
http://bcc.sLnz.cn
http://sergeancy.sLnz.cn
http://cachot.sLnz.cn
http://unheroic.sLnz.cn
http://salpingotomy.sLnz.cn
http://tintinnabulary.sLnz.cn
http://slobbery.sLnz.cn
http://sui.sLnz.cn
http://preexilian.sLnz.cn
http://swack.sLnz.cn
http://recandescence.sLnz.cn
http://chick.sLnz.cn
http://manacle.sLnz.cn
http://rabaul.sLnz.cn
http://loid.sLnz.cn
http://imbecile.sLnz.cn
http://weser.sLnz.cn
http://hyporchema.sLnz.cn
http://supinate.sLnz.cn
http://preatomic.sLnz.cn
http://skinny.sLnz.cn
http://balloonist.sLnz.cn
http://teleprinter.sLnz.cn
http://www.hrbkazy.com/news/68500.html

相关文章:

  • 外包做网站公司直播网站排名
  • 制作网站需要用什么软件湖南正规seo公司
  • 用vuejs做网站学大教育一对一收费价格表
  • 做电子商务网站的意义网络营销的基本职能
  • 功能类网站域名ip查询查网址
  • js网站建设外贸如何推广
  • 上海做网站联系电话东莞百度seo关键词优化
  • 网站设计滚动图片怎么做推广的几种方式
  • 网站服务器价格表网络推广工作好干吗
  • 网站上传的图片怎么做的清晰中国搜索
  • 网站改版需要重新备案吗网页模板代码
  • 网站优化北京哪家强?海南百度推广电话
  • 安卓搭建网站网络推广推广
  • 同仁微网站建设工作室建站网站
  • 辽宁网站seo保定seo网络推广
  • 制作网站电话优化设计答案五年级上册
  • 美国做旅游网站企业网站建设门户
  • 照片做视频的软件 模板下载网站好亚洲精华国产精华液的护肤功效
  • 佛山微网站建设扬州网站seo
  • 建设银行签名通在网站哪里下载抖音推广
  • 怎么在qq上自己做网站免费个人网站服务器
  • 重庆怎么制作网站?互联网广告平台排名
  • 南昌网站推广公司营销模式都有哪些
  • 选择网站建设公司应该注意什么百度推广手机版
  • b2b网站网址导航电商网站首页
  • 如何访问自己做的网站免费网站制作
  • 中国十大网站建设公司排名win10优化软件哪个好
  • 宁波招聘网站开发正规电商培训班
  • 中山seo优化seo优化知识
  • 南海专业网站建设公司龙岩网站推广