基于QWidget类的动态库在4.8.1隐式调用时出现staticMetaObject' of dllimport'd class的解决办法
来源:互联网 发布:射频电路仿真软件 编辑:程序博客网 时间:2024/06/05 11:13
具体提示如下:
App\debug\moc_scopewidget.cpp:56: 错误:definition of static data member 'ScopeWidget::staticMetaObjectExtraData' of dllimport'd class
同时还有一些警告:
App\debug\moc_scopewidget.cpp:56: 警告:'ScopeWidget::staticMetaObjectExtraData' redeclared without dllimport attribute after being referenced with dll linkage
不仅staticMetaObjectExtraData有这样的警告信息,其它的静态函数也还有很多。
思考:
按理说Debug这地方不需要moc_scopewidget.cpp文件的,但是在工程中增加对应的scopewidget.h头文件之后,自动生成了此文件,并导致错误。
过程:
本来对QtCreator就不太了解,此时更是逃避不了,大量google之后,终于找到一篇好贴:http://www.qtforum.org/article/26708/shared-library-compilation-error.html?s=648c17887f3ae72775fc9386fc3c403e37ca7334#post92829
大致意思就是SDK4.7.4中没有此问题,但是4.8.1中存在此问题。
解决办法简单也很给力:
HEADERS += mainwindow.h libs/myclass/myclass.hTryHEADERS += mainwindow.hHEADERS are processed by moc, but you do not need it this time.http://doc.trolltech.com/4.4/qmake-varia…ce.html#headers#include "libs/myclass/myclass.h" // only in unit where it is used.
按照说明,将工程树中的ScopeWidget.h从工程中移除,然后重新编译,竟然好了。
结论:
pro文件中区块
HEADERS += mainwindow.h \
../ScopeWidget/ScopeWidget.h
改为如下即可(删除第二行):
HEADERS += mainwindow.h
感慨:
1、发现问题头绪,但是并没有真正思维到深度,过多的依赖搜索。2、主要还是对QtCreator动态库方面不熟悉导致的。
3、悟性啊,悟性,我并不多。
- 基于QWidget类的动态库在4.8.1隐式调用时出现staticMetaObject' of dllimport'd class的解决办法
- 使用QtService接口的时候出现undefined reference to `::staticMetaObject'
- 在linux下用ns2测试*.tcl时出现error when calling class OldSim:的解决办法
- 在DLL编程中调用模版类时出现的类似"class“XXX”需要有 dll 接口由 class“XXX”的客户端使用"的warning的解决方案
- 在DLL编程中调用模版类时出现的类似"class“XXX”需要有 dll 接口由 class“XXX”的客户端使用"的warning的解决方案
- QWidget 直接派生类的样式表不起作用的解决办法
- VC6调用VC2005编译生成的lib/dll库出现“unresolved external symbol "__declspec(dllimport) int __cdecl”错误的原因
- 在注册控件时出现对DllRegisterServer的调用失败的解决办法
- Qt::WindowFlags枚举类型解析 By Xchen 20160718 在使用Qt设计的时候经常会看到QWidget控件的构造函数出现下面这样一句话: QWidget(QWidget *
- 一次调用动态库时出现问题的解决历程
- 在控制台和mfc平台下调用caffe库会出现的bug及解决办法
- 解决c++Dll编写过程中出现的definition of dllimport function not allowed
- C#在调用office的PowerPoint时出现 对 COM 组件的调用返回了错误 HRESULT E_FAIL。解决办法。
- C#用DllImport方式调用C++封装的dll库
- 解决导出的MFC扩展动态库在调用时出现Debug Assertion Failed错误的问题
- 基于bcel的class动态编译
- error: LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __cdecl QWidget::
- QWidget::paintEvent 被调用的场景
- 微软中国推出Windows phone 8应用大赛
- ERP系统借贷关系表
- git 删除右键菜单
- 查看Linux下mysql版本号命令
- js监听浏览器,关闭,刷新(兼容IE6+,Firefox,Chrome,Safari)
- 基于QWidget类的动态库在4.8.1隐式调用时出现staticMetaObject' of dllimport'd class的解决办法
- 获取资源string /string【】
- 生活不只是生存:教你学会生活
- 利用POI组件 导入导出excel
- epoll的一点思考(5)
- Google Nexus (i9250)fastboot 升级4.2
- Javascript工具包
- IOS setNeedsDisplay 和 setNeedsLayout
- ABAP通过交互界面向自建表里添加/删除数据