• 2714阅读
  • 4回复

[讨论]带有Q_OBJECT宏的类无法导出,编译报错 [复制链接]

上一主题 下一主题
离线xhh@cy
 

只看楼主 正序阅读 楼主  发表于: 2019-02-15

#pragma once

#include <QObject>

class Q_DECL_EXPORT Test :public QObject
{
    Q_OBJECT
public:
    void fun() {};
};

上述代码封装在库,外部调用Test t;t.fun(); 编译不通过
报错如下:
main.obj : error LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const Test::staticMetaObject" (?staticMetaObject@Test@@2UQMetaObject@@B)
我将Q_DECL_EXPORT 换成 _declspec(dllexport)也是同样的错误
本帖提到的人: @test
离线xhh@cy

只看该作者 4楼 发表于: 2019-02-21
回 yanche 的帖子
yanche:你的Test 这个类是dll中的吗?如果是dll中封装的,那么调用失败,多半和你的调用方法有关系。
建议你先查找下 Lib 依赖是否添加了 (2019-02-18 12:25) 

Lib依赖添加了,把那个宏注释掉就没有问题了
离线xhh@cy

只看该作者 3楼 发表于: 2019-02-21
回 dbzhang800 的帖子
dbzhang800:运行qmake了吗,这个东西在.h中还是在.cpp中? (2019-02-15 14:08) 

.h 啊,执行qmake 了,你之前导出过带有Q_OBJECT宏的类能用?我把宏去掉编译就通过了。
离线yanche

只看该作者 2楼 发表于: 2019-02-18
你的Test 这个类是dll中的吗?如果是dll中封装的,那么调用失败,多半和你的调用方法有关系。
建议你先查找下 Lib 依赖是否添加了
具有十年研发经验的团队,专注于C++、Qt、Python等语言,专业软件开发团队,致力于完美解决客户的需求,我们期待与您的洽谈。
业务范畴:应用软件定制、UI定制、各类管理系统定制、仿真设计、三维开发、通信SDK定制、Logo设计等等
QQ:548725431
微信:yanche521
离线dbzhang800

只看该作者 1楼 发表于: 2019-02-15
运行qmake了吗,这个东西在.h中还是在.cpp中?
快速回复
限100 字节
 
上一个 下一个