VS + QT 出现 LNK2001 无法解析的外部符号 QMetaObject 的问题

        VS + Qt开发过程中有时候会新增一个QtClass(带Q_OBJECT定义的类时),发现编译无法通过,可能会出现LNK2001 的错误,这是由于IDE没有自动为新建的类生成 moc_XXXX.cpp 文件导致的。网上很多博客上写使用moc命令来解决,但是这样的话,如果多人开发的话,在你电脑上能变过,moc_XXXX.cpp我们一般都不提交,那么别人有可能也会遇到这种情况。那咱们来找一下造成这种现象的原因吧,这样一次解决就ok了。

        咱们先打开工程对应的xxxx.vcxproj(可以使用notepad++打开修改),对比别的正常的Qt头文件,就会发现,你这个异常的头文件程序把它当成了一个普通的C++class,

   

正常的Qt 类对应的头文件

    
    
    


你新建有问题的类的头文件


    

看到上面没,你的新建的Qt 类误认为是普通的C++类,所以不会生成对应的moc文件,那咱们改一下就可以了,把当成C++普通类的部分删除,将这个加入到QtMoc中就可以了

修改后的:

    
    
    
    

这还没完,咱们还要修改工程对应的xxxx.filters文件:

格式有一点微小的改变,这里面就不做详细的说明了,照着下面修改下:


    
        Header Files
    
    
        Header Files
    
    
        Header Files
    
    
        Header Files
    

到此,修改完成,重新编译一下就可以了

你可能感兴趣的:(Qt-C++,C++,c++,qt)