使用QWT产生error LNK2001的原因及解决方案
来源:互联网 发布:烟台java培训班哪个好 编辑:程序博客网 时间:2024/05/21 11:24
classPlot:publicQwtPlot
{
Q_OBJECT
……
}
此时报错:error LNK2001:无法解析的外部符号"public: static struct QMetaObject const QwtPlot::staticMetaObject"
出现这样的连接错误一般都是由于QwtPlot类的头文件中没有加Q_OBJECT而导致的,QwtPlot是QWT提供的类,怎么可能没有加Q_OBJECT宏呢?好吧,那就老老实实的跟踪打开QwtPlot类的头文件看看吧(没法查看QwtPlot的.cpp文件,应为QWT通过动态库的方式提供这些类的)
classQWT_EXPORTQwtPlot:publicQFrame,public QwtPlotDict
{
Q_OBJECT
……
}
我晕!QwtPlot类加宏Q_OBJECT了,那为什么还会出现这个连接错误?这是什么原因?QWT已经是非常成熟的QT关于二维曲线绘制的开源框架了,也不可能会出现这样的低级错误。算了,换种使用方法试试吧:
classPlot:publicQwtPlot
{
//Q_OBJECT
……
}
注销掉派生类中的Q_OBJEXT,疯了。居然编译通过了!这又是什么原因?
由于预处理所带来的问题
QWT通过动态库抛出类的方式将类QwtPlot抛出供使用者使用,我们来看一下抛出地方时如何定义的(位于qwt_golbal.h):
#ifdefQWT_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的抛出类,否则就会出错!
- 使用QWT产生error LNK2001的原因及解决方案
- 使用QWT产生error LNK2001的原因及解决方法
- 使用QWT产生error LNK2001的原因及解决方法
- 使用QWT产生error LNK2001的原因及解决方法 .
- 使用QWT产生error LNK2001的原因及解决方法
- 使用QWT产生error LNK2001的原因及解决方法
- (zz)使用QWT产生error LNK2001的原因及解决方法
- error LNK2001的一些原因
- leaked window产生的原因及解决方案
- 可能产生LNK2001错误的原因:
- 能产生LNK2001错误的原因
- 链接错误LNK2001的产生原因
- JSP中文乱码的产生原因及解决方案
- 行内元素产生水平空隙的原因及解决方案
- java.lang.NoClassDefFoundError错误产生的原因及解决方案
- Error establishing socket的产生原因及解决方法
- LNK2001链接错误产生的原因分析和解决办法
- LNK2001链接错误产生的原因分析和解决办法
- Java环境变量配置
- Javascript Exception
- Javascript OOP augmenting with prototype
- 背包总结
- QWT在win7下的安装说明
- 使用QWT产生error LNK2001的原因及解决方案
- Javascript Closure
- 集训第三周
- 黑马程序员——集合学习日志
- YouTube视频播放器采用了HTML5
- struts2的ajax实现
- Windows 8 Store应用开发XAML实例教程系列汇总
- awr report
- Vaadin Web应用开发教程(18):UI组件-Table 组件