QT之qwtplot3d使用(二)
本次介绍qwtplot3d编译的注意事项和该库的使用方法。
qwtplot3d编译配置
qt项目的配置在.pro文件中书写,该文件的详细语法内容可以参考下面这篇博客:
Qt 之 pro 配置详解
以下仅说明和本项目相关的内容:
- 因为使用到了openGL库,需要在pro文件中添加声明,可以在文件最后添加一行
LIBS += -lopengl32 -lGLU32
为了编译之后生成lib和dll文件,在 win32:dll:DEFINES 后添加Q_WS_WIN 修改后如下:
win32:dll:DEFINES += QT_DLL QWT3D_DLL QWT3D_MAKEDLL Q_WS_WIN
原有的CONFIG声明在Debug下是正常的,但是在release下则会出错,修改如下:
CONFIG += qt warn_on thread static
具体原理还没有搞懂,留待解决。
2. 原代码中在qwt3d_global.h文件中缺少头文件声明,添加后如下:
#ifndef QWT3D_GLOBAL_H
#define QWT3D_GLOBAL_H
#include <WINDOWS.H>
#include <GL/GL.H>
#include <GL/GLU.H>
#include <qglobal.h>
#if QT_VERSION < 0x040000
#include <qmodules.h>
#endif
3 生成的库文件为lib和dll,注意msvc、qt版本一定要与调用库的项目相同,并且release或是debug也要相同,否则会报找不到函数的错。
库文件的使用
新建要调用qwtplot3d库的项目,配置其pro文件,正确调用qwtplot3d库需要项目中包含qwtplot3d.dll,qwt3d.lib以及qwtplot3d库的头文件,在pro文件中定义三者的路径,如下:
TEMPLATE = app
CONFIG += qt warn_on thread release
UI_DIR = tmp
MOC_DIR = tmp
OBJECTS_DIR = tmp
INCLUDEPATH += ../include #头文件目录
DEPENDPATH = $$INCLUDEPATH
DESTDIR = ../bin #生成程序的目录
LIBS += -lopengl32 -lglu32
unix:LIBS += -lqwtplot3d -L../../lib
linux-g++:QMAKE_CXXFLAGS += -fno-exceptions
QT += core network widgets
win32{
LIBS += ../lib/qwtplot3d.lib #库文件
#TEMPLATE = vcapp #该行注释掉
DEFINES += QT_DLL QWT3D_DLL
RC_FILE = icon.rc
# contains (CONFIG, debug) {
#QMAKE_LFLAGS += /NODEFAULTLIB:msvcrt
# }
}
qmake之后,include等文件夹会新建出来,将qwtplot3d库中include文件夹中的所有文件复制进去,将build文件夹中lib文件夹中的文件复制到项目文件夹中的lib文件夹中,然后就可以编译了。但是要运行的话还需要将qwtplot3d.dll和qwtplot3d.lib复制到bin文件夹中,即与exe同一个文件夹。
修改后的qwtplot3d库托管在gitee平台:
https://gitee.com/editorfree/qwtplot3d