QWT使用出错
来源:互联网 发布:美工助理的基本要求 编辑:程序博客网 时间:2024/06/09 15:35
使用QWT例子oscilloscope出现如下错误:
本来这个例子在examples文件下直接QtCreator打开pro运行无错的。
当我转到VS项目里就无法编译通过,原来是Qwt在pri文件里定义了一个
win32 {
contains(QWT_CONFIG, QwtDll) {
DEFINES += QT_DLL QWT_DLL
}
}
所以在VS项目里,我们也需要设置一个预处理QWT_DLL。只有在预处理的时候定义了 QWT_DLL才能使用QWT的抛出类,否则就会出错!这个道理同样适用于我们自己生成的动态库,VS2008中的设置方法如下图所示:
具体方法:请看下面
------------------------------------转载------------------------------------------
在使用QWT进行二维曲线绘制,使用方法如下:
class Plot: public QwtPlot
{
Q_OBJECT
……
}
此时报错:error LNK2001: 无法解析的外部符号"public: static struct QMetaObject const QwtPlot::staticMetaObject"
出现这样的连接错误一般都是由于QwtPlot类的头文件中没有加Q_OBJECT而导致的,QwtPlot是QWT提供的类,怎么可能没有加Q_OBJECT宏呢?好吧,那就老老实实的跟踪打开QwtPlot类的头文件看看吧(没法查看QwtPlot的.cpp文件,应为QWT通过动态库的方式提供这些类的)
class QWT_EXPORT QwtPlot: public QFrame, public QwtPlotDict
{
Q_OBJECT
……
}
我晕!QwtPlot类加宏Q_OBJECT了,那为什么还会出现这个连接错误?这是什么原因?QWT已经是非常成熟的QT关于二维曲线绘制的开源框架了,也不可能会出现这样的低级错误。算了,换种使用方法试试吧:
class Plot: public QwtPlot
{
//Q_OBJECT
……
}
注销掉派生类中的Q_OBJEXT,疯了。居然编译通过了!这又是什么原因?OK!我已无能为力,还是交给高手吧!……!五分钟后,高手回复了(不愧是高手)!
由于预处理所带来的问题
QWT通过动态库抛出类的方式将类QwtPlot抛出供使用者使用,我们来看一下抛出地方时如何定义的(位于qwt_golbal.h):
#ifdef QWT_DLL
#if defined(QWT_MAKEDLL) // create a Qwt DLL library
#define QWT_EXPORT __declspec(dllexport)
#define QWT_TEMPLATEDLL
#else // use a Qwt DLL library
#define QWT_EXPORT __declspec(dllimport)
#endif
#endif // QWT_DLL
我们应该怎么理解上面这段代码呢?只有在预处理的时候定义了 QWT_DLL才能使用QWT的抛出类,否则就会出错!这个道理同样适用于我们自己生成的动态库,VS2008中的设置方法如下图所示:
至此问题解决
转载:http://blog.csdn.net/sta30001/article/details/6873499
- QWT使用出错
- qwt使用
- QWT使用总结
- QWT的使用陷阱
- 使用qwt作曲线图
- Qwt使用之QwtPlot
- qwt安装使用教程
- qwt 的一些使用
- Qwt使用之QwtPlot
- qwt安装使用精华版
- 使用qwt作曲线图
- Qwt使用之QwtPlot
- Win7下使用QWT
- Qwt使用之QwtPlot
- QWT的使用
- QWT使用之QwtPlotCurve
- QWT编译、配置、使用
- qwt编译配置使用
- Redis集群的配置
- CvRect、RECT和Rect
- 详解Javascript中prototype属性
- PB程序优化
- MkDocs 文档生成逻辑浅析
- QWT使用出错
- hdu_1054最小点覆盖树上
- Cloudera Manager下安装kafka
- Java编码约定中对下列部分的要求:类、属性、方法、包、文件名、变量、常量、控制结构、语句行、注释
- Java中常用jar包解释
- DHTML技术演示---类似调查问卷的单选框学习
- 20170412-cpp上机作业【复制构造函数】
- ThinkPHP 3.2.x 集成极光推送指北
- volatile能保证long&double类型变量操作的原子性