相关疑难解决方法(0)

Qt,VS2005,Qwt - 不能在从Qwt小部件派生的类中使用Q_OBJECT

我们为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中.

qt visual-studio-2005 qt4 qwt

5
推荐指数
1
解决办法
4697
查看次数

标签 统计

qt ×1

qt4 ×1

qwt ×1

visual-studio-2005 ×1