• LNK2001 无法解析的外部符号 "public: virtual struct QMetaObject


    LNK2001    无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl CViewerWidget::metaObject(void)const " (?metaObject@CViewerWidget@@UEBAPEBUQMetaObject@@XZ)
    LNK2001    无法解析的外部符号 "public: virtual void * __cdecl CViewerWidget::qt_metacast(char const *)" (?qt_metacast@CViewerWidget@@UEAAPEAXPEBD@Z)
    LNK2001    无法解析的外部符号 "public: virtual int __cdecl CViewerWidget::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@CViewerWidget@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)

     

    刚开始我以为是我的lib文件或者dll文件配置的路径不对(配置方法可见我博客——visual studio 2015导入其他qt项目的dll和lib和.h头文件

    后来我发现下面这种报错方式(即这个virtual修饰的函数是自己写的):

    LNK2001    无法解析的外部符号 "public: virtual void __cdecl CDigitalEarthView::OnInitialUpdate(void)" (?OnInitialUpdate@CDigitalEarthView@@UEAAXXZ)

    这种形式错误原因是定义的virtual 方法没有进行实现。

    但是我的那个错误提示virtual修饰的方法QMetaObject明显就是Qt的方法,后面发现在vs上建立Qt项目之后不要添加.cpp文件(如下图)

     

    现在是在Qt项目中,好像vs要对文件做一些Qt相关配置,所以不要建立C++的cpp文件,要像下面这种方式一样

     

    它会创建.h和.cpp两个文件,如果你不用.h文件,删掉就可以。

    在这样建立的cpp文件中写代码就可以了(你可以把生成的代码都删掉,写自己的就行)

  • 相关阅读:
    golang的server push
    go context学习
    go struct{} 空结构体的特点和作用
    Java基本语法--关键字&标识符
    初识Java
    Dos常用命令
    Markdown进阶教程
    Markdown基础教程
    Navicat Premium15安装与激活
    JDK的安装与环境配置(Windows10)
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/15044522.html
Copyright © 2020-2023  润新知