原因是加入Q_OBJECT这个macro的类,被编译的时候就要用到moc这个命令,所以在VS2010中,没有加入此命令的应用,当然会出错了。所以解决办法是加,或者如果你不使用信号槽可以直接删除。

当要在GUI中用到信号与槽,就需在.h文件中的类里写入Q_OBJECT宏。而任何含有Q_Object的类都必须使用Qt的moc工具生成对应的cpp文件,然后在项目里面包含这个cpp,编译才能成功,否则会出错链接错误,moc yourfilename.h -o moc_youfilename.cpp,这是moc命令行的使用。

Qt自动生成moc文件:

命令行生成moc文件的方式:

cd C:/Qt/4.7.1/bin

moc  .h文件群路径 -o 要生成的moc文件的全路径;

例如:

VS中不是用addin创建的项目,自动生成moc文件的设置:

在VS的解决方案管理器里面,右键需要生成moc文件的头文件-打开属性窗口;

常规-项类型,选择自定义生成工具;

关闭属性窗口重新打开,就出现了自定义生成工具选项;

自定义生成工具-常规:

命令行:"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"

输出:.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp

将输出视为内容:是

链接对象:是

如果编译还有问题,在解决方案资源管理器里阿敏,右键生成的moc文件打开属性窗口;

配置属性-常规:设置下在debug和release下面分别设置下是否在项目中排除的属性;

references:

http://blog.csdn.net/zxgis/article/details/8243493

http://liangbing8612.blog.51cto.com/2633208/596269

http://www.cnblogs.com/liuyunfeifei/archive/2013/05/01/3052856.html

http://blog.csdn.net/hackbuteer1/article/details/6573317

http://stackoverflow.com/questions/7272040/q-object-problem-in-visual-c

http://blog.sina.com.cn/s/blog_687960370101dd79.html

http://stackoverflow.com/questions/14170770/unresolved-external-symbol-public-virtual-struct-qmetaobject-const-thiscal

http://blog.csdn.net/xiaofengkuang/article/details/9999147

一个搜索时候搜索到的关于用VS2010重新编译Qt的附属产物:

http://stackoverflow.com/questions/5601950/how-to-build-qt-for-visual-studio-2010

Qt编程之信号与槽-------unresolved external symbol "public: virtual struct QMetaObject const * __thiscall XX::metaObject(void)const的更多相关文章

  1. error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const

    类中包含信号槽在在类的声明中一定得使用Q_OBJECT.当编译出现问题上述问题时. 解决方法: 1.删除项目中的头文件以及源文件,再添加. 2.在头文件中对该类进行声明,不是使用class mycla ...

  2. unresolved external symbol "public: virtual __thiscall...错误

    今天自己在编写类模板的程序时,遇到了如下的错误:unresolved external symbol "public: virtual __thiscall...错误 调试修改了半天程序,还 ...

  3. error LNK2001: unresolved external symbol "public: virtual

    1) Mine solution : project-setting :static lib to shared dll .then ok. 找不到secondchar的定义, 你是否没有把包含sec ...

  4. (转载)浅析error LNK2001: unresolved external symbol "public: __thisc...

    学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于      编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,      编译都已通过.产生连接错误的原因非常多 ...

  5. c++模板使用出错情况error LNK2019: unresolved external symbol "public: float __thiscall Compare<float>::min(void)" (?min@?$Compare@M@@QAEMXZ) referenced in function _main

    将类模板在头文件中定义,类的成员函数在头文件中声明,头文件中只留下接口,函数的实现在另一个.cpp文件中,这样编译出来错误error LNK2019: unresolved external symb ...

  6. [Window编程][VC6.0++][error LNK2001: unresolved external symbol __imp__PlaySoundA@12]

    错误情况 这几天看<Windows游戏编程大师技巧>,在看第三章的时候,把书上的例子敲了一边,但是出现了下述错误,最后在网上找到了解决方法. 错误截图 解决方法 在main.cpp头文件下 ...

  7. error LNK2001: unresolved external symbol "public: __thiscall ControllerInterface::ControllerInterface(class QObject *)" (??0ControllerInterface@@QAE@PAVQObject@@@Z) downloadcontroller.obj

    前几天刚遇到这个问题,但是今天再碰到就又要思考怎么解决.这次特别记录一下,以防下次碰到再手足无措: 1.看到这个报错第一感觉LNK关键字,表示连接错误,这种错误有几个可以下手的点 1)函数声明和定义是 ...

  8. error LNK2001: unresolved external symbol "public: __thiscall CWinAppEx::CWinAppEx(int)" (??0CWinApp

    1.这个是网上找的别人的解决办法,本人没试过 解决办法: 网上大多说的这类似问题是解决自定义类的,可是这个连接是系统CWinAppEx,网上查了很久也没找到原因,重装了vs也没解决.后面在google ...

  9. 链接报error LNK2019: unresolved external symbol错误,解决

    http://blog.163.com/aiding_001/blog/static/22908192011102224344450/ 某次编写一个COM组件,接口定义好之后,增加了ZRX代码后编译链 ...

随机推荐

  1. POST多个参数到Web API控制器

    交互基于Json的方式打包传递就不介绍了,主要设置请求头为 contentType: "application/json", //必须有 数据位Json格式的字符串,在服务器端定义 ...

  2. MySQL常用Json函数

    官方文档:JSON Functions Name Description JSON_APPEND() Append data to JSON document JSON_ARRAY() Create ...

  3. POJ 3280 Cheapest Palindrome 简单DP

    观察题目我们可以知道,实际上对于一个字母,你在串中删除或者添加本质上一样的,因为既然你添加是为了让其对称,说明有一个孤立的字母没有配对的,也就可以删掉,也能满足对称. 故两种操作看成一种,只需要保留花 ...

  4. git术语解释staging,index,cache

    当我在使用git的时候,有三个东西的出现,一度让我非常困扰,就如题所述,staging,index,和cache. 比如,当我阅读git官网提供的电子书<Pro Git>的时候,最初一章里 ...

  5. CUGBACM_Summer_Tranning 组队赛解题报告

    组队赛解题报告: CUGBACM_Summer_Tranning 6:组队赛第六场 CUGBACM_Summer_Tranning 5:组队赛第五场 CUGBACM_Summer_Tranning 4 ...

  6. Oracle SQL ANY和ALL语句

    Oracle的嵌套子查询可以使用Some,Any和All对子查询中返回的多行结果进行处理. Some表示满足其中一个的含义,是用or串起来的比较从句. 例如:SELECT * FROM emp WHE ...

  7. AutoMapper2

    1.嵌套映射 namespace Second { class Program { static void Main(string[] args) { Mapper.CreateMap<Oute ...

  8. Jquery:Jquery中的事件<二>

    这几天快忙死了,办了离职还得办入职,完全打乱了我的计划,但是能有一个理想的工作,还是很开心的,以后加把劲,争取把计划再赶上来!不说了,学习!!! 五.事件对象的属性 1.event.type:获取事件 ...

  9. 关于WinForm/Web如何使用缓存Cach

    原文链接:http://www.cnblogs.com/zfanlong1314/archive/2013/03/28/2986403.html Cache 的绝对到期与滑动到期 绝对到期:设置绝对过 ...

  10. win7添加usb3.0驱动(错误代码1392,文件或目录损坏且无法读取)

    Win7添加usb3.0驱动 之前一直按照网上的方法执行dism命令挂载时,总是失败,错误代码1392,显示原因是文件或目录损坏且无法读取.这个错误以前在装机时老是出现导致系统安装不成功,在BIOS中 ...