dar*_*ron 5 qt visual-studio-2005 qt4 qwt
我们为VS2005编译了QT 4.6和QWT 5.2.0.
我们试图从QwtDial派生一个类,派生类有插槽.所以,我们需要添加Q_OBJECT宏.但是,当我们这样做时,链接器会清除此错误:
错误LNK2001:未解析的外部符号"public:static struct QMetaObject const QwtDial :: staticMetaObject"(?staticMetaObject @ QwtDial @@ 2UQMetaObject @@ B)
我用依赖查看了Qwt.dll,它有这个功能.使用十六进制编辑器查看.lib文件显示它与该名称损坏的字符串完全匹配.
我们在路径中有Qwt lib.实际上,如果我重命名lib,那么它会给出一个无法找到lib文件的错误.所以,我们知道它正在寻找正确的lib.
如果我们跳过Q_OBJECT,那么所有内容都使用几个QWT小部件链接和绘制,包括我们的非Q_OBJECT Qwt派生类.
有谁知道什么会导致这个真正烦人的链接器问题?
更新:
我已经验证了我添加Q_OBJECT的类肯定是为它生成了一个MOC文件.链接器错误实际上来自此生成的MOC文件:
moc_GaugeWidget1.obj : error LNK2001: unresolved external symbol "public: static
struct QMetaObject const QwtDial::staticMetaObject"
(?staticMetaObject@QwtDial@@2UQMetaObject@@B)
Run Code Online (Sandbox Code Playgroud)
所以,它看起来像是一种非常典型的东西.符号肯定在lib中.
Mic*_*ael 11
我有同样的问题.好吧,我正在使用Qt4.4和VC2003更新一个旧项目,而我正在使用QwtPlot而不是QwtDial.错误是:
LNK2001:未解析的外部符号"public:static struct QMetaObject const QwtPlot :: staticMetaObject"(?staticMetaObject @ QwtPlot @@ 2UQMetaObject @@ B)
只是.没有其他的.我发现论坛参考指向调试/发布混合的问题,可能与删除Qt Designer插件有关.
这似乎对我有用:在project.pro文件的顶部添加行:"DEFINES + = QWT_DLL".
qmake project.pro
nmake发布
| 归档时间: |
|
| 查看次数: |
4697 次 |
| 最近记录: |