zoukankan      html  css  js  c++  java
  • Qt编程之信号与槽-------unresolved external symbol "public: virtual struct QMetaObject const * __thiscall XX::metaObject(void)const

    原因是加入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)inmoc.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

  • 相关阅读:
    MatrixTraceTransform主要逻辑在transform方法中
    重写LayoutParams,读取子View自定义属性
    onLayout初始化裁剪信息
    drawChild中画阴影,裁剪出圆角
    继承ConstraintLayout
    如何创建自定义的Resource实例
    mysql优化整理(索引)
    java设计模式
    Oracle中MERGE语句的使用
    BigDecimal 转成 double
  • 原文地址:https://www.cnblogs.com/foohack/p/3867364.html
Copyright © 2011-2022 走看看