qt 怎么使用第三方库

qt 怎么使用第三方库,第1张

之前项目里使用其它的第三方库都是leader或同事给配置好的,从没 *** 心这回事,真是惭愧,。今天同学给我发来一个工程,需用使用到Qt库和Qwt库,用QtCreator打开编译,提示找不到Qwt库里的头文件,于是试着配置一下,居然折腾了许久还没运行起来。后来看了一下Qt的qmake文档,才得以搞定。qmake 的说明文档里有关于声明使用其它库的说明:

Declaring Other Libraries

If you are using other libraries in your project in addition to those supplied with Qt, you need to specify them in your project file.

The paths that qmake searches for libraries and the specific libraries to link against can be added to the list of values in the LIBS variable. The paths to the libraries themselves can be given, or the familiar Unix-style notation for specifying libraries and paths can be used if preferred.

For example, the following lines show how a library can be specified:

[cpp] view plain copy

LIBS += -L/usr/local/lib -lmath

The paths containing header files can also be specified in a similar way using the INCLUDEPATH variable.

For example, it is possible to add several paths to be searched for header files:

[cpp] view plain copy

INCLUDEPATH = c:/msdev/include d:/stl/include

如果电脑上已经安装了Qt 和Qwt的环境,那么对于一个需要使用Qwt的程序来说,只需要在其工程文件中添加如下配置:

(假设你的Qwt安装目录为 C:/Qwt-6.0.1 )

1)在 LIBS 变量后面添加链接这个库的路径(例如-LC:/Qwt-6.0.1/lib)和名称(例如 -lqwt, 也可以用 qtAddLibrary(qwt) 添加动态库)

2)在INCLUDEPATH variable.后面添加这个引用该库所需要的头文件(例如 C:/Qwt-6.0.1/include)

[cpp] view plain copy

#include( $${PWD}/../examples.pri )

#include( ../3rdparty/qwt/qwtplot.pri )

#include( C:/Qwt-6.0.1/features/qwtconfig.pri )

INCLUDEPATH += C:/Qwt-6.0.1/include #必须有

#DEPENDPATH += C:/Qwt-6.0.1/lib

#LIBS += -L/usr/local/lib -lmath

LIBS += -LC:/Qwt-6.0.1/lib -lqwt #必须有 否则报错 :-1: error: cannot find -lqwt

#qtAddLibrary(qwt) #必须有

#CONFIG += qwt

你的IDE是VS吗? 以下说明以VS8英语版为标准, 其他IDE请稍作自行更改

// 全局

Tools(工具) - Options(选项) - Project and Solutions(项目和工程)

在右上下拉菜单选择"Library file"(库文件), 双击在最后一行填入.lib文件的路径和文件名, 路径推荐使用绝对路径.

// 基于项目

右键项目 - Property(属性) - Linker(连接器) - General(通常设置)

然后再右侧"Additional Library Directories"(额外的库目录)中把库文件所在路径填进去, 可以是相对路径.

然后再左侧选择"Input"(输入), 把cyapi.lib打入"Additional Dependencies"(额外依赖项)中.

一、建立并生成动态链接库

1

我们首先在磁盘的某个位置建立一个名为DllDemo的文件夹。

打开QtCreator,新建工程,我们选择Library,C++库,然后就是choose。

怎样在Qt中建立使用动态链接库

2

然后在d出的C++库对话框我们默认类型共享库,名称为MyDll。路径就是我们刚才建立的DllDemo文件夹。然后,一直下一步,直到点击完成。

怎样在Qt中建立使用动态链接库

3

我们来看看程序结构,以及pro文件内容。

我可以看到系统自动生成了一个mydll_global.h的文件。

pro内也自动生成了一些内容。可以看到TEMPLATE = lib,而不是我平时的TEMPLATE = app。

怎样在Qt中建立使用动态链接库

4

再来看看mydll_global.h的内容。

可以看到系统自动定义了两个宏。用于声明哪些函数是需要我们导出的。

怎样在Qt中建立使用动态链接库

5

下面我们来给我们的代码添加点内容,以便于我们待会使用。

首先我们在mydll.h中添加几行代码,如下图。

注意:extern "C" MYDLLSHARED_EXPORT必须要有。

怎样在Qt中建立使用动态链接库

6

再来看看mydll.cpp中的实现代码,都比较简单。

怎样在Qt中建立使用动态链接库

7

代码编写完毕后,我们直接构建就行了。然后就可以看到我们生成的dll了。

怎样在Qt中建立使用动态链接库

END

二、测试生成的DLL

新建一个基于Qt的控制台应用程序,名称为DllTest。依然放置在我们的DllDemo的目录下。

怎样在Qt中建立使用动态链接库

建好了以后,就可以在main.cpp写代码了。我们通过QLibrary类来加载dll。

因为要获得类对象的实例,所以我们需要将mydll.h包含进来。

要注意的是,我没有对函数是否成功获取做检测。

来看看我们的代码:

怎样在Qt中建立使用动态链接库

代码写完后就可以构建程序了。不过要运行程序,我们还需要将刚才生成的dll拷贝到程序的同级目录。

怎样在Qt中建立使用动态链接库

在IDE中运行程序,因为我生成的是debug版的程序,相关的环境变量未设置,无法独立运行。

可以看到我们的dll工作的很好,程序运行正常。

怎样在Qt中建立使用动态链接库

END

三、善用Assistant

1

最后我们来看看Assistant中关于QLibrary的描述。比较费解的是,Assistant中并没有对创建共享库做详细的说明,估计是这个太简单或资料太多了吧。

怎样在Qt中建立使用动态链接库


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存