在vs2022中,尽管用类向导创建类时添加了QObject作为基类,实际上仍然是普通的c++类。
这是一种错误的方法,正确的放在后面,先来看看如何解决已经创建的类编译不通过的处理方法:
出现LNK2001 的错误,这是由于IDE没有自动为新建的类生成 moc_XXXX.cpp 文件导致的。
按照以下步骤修改。
分别打开工程对应的xxxx.vcxproj和xxxx.filters文件;
进行修改:
xxxx.vcxproj
正常的Qt 类对应的头文件
<ItemGroup>
<QtMoc Include="xxxx1.h /">
<QtMoc Include="xxxx2.h /">
<QtMoc Include="xxxx3.h /">
</ItemGroup>
你新建有问题的类的头文件
<ItemGroup>
<ClCompile Include="xxxx4.h /">
</ItemGroup>
修改后的:
<ItemGroup>
<QtMoc Include="xxxx1.h /">
<QtMoc Include="xxxx2.h /">
<QtMoc Include="xxxx3.h /">
<QtMoc Include="xxxx4.h /">
</ItemGroup>
xxxx.filters
修改后
<ItemGrop>
<QtMoc Include="xxxx1.h">
<Filter>Header Files</Filter>
</QtMoc>
<QtMoc Include="xxxx2.h">
<Filter>Header Files</Filter>
</QtMoc>
<QtMoc Include="xxxx3.h">
<Filter>Header Files</Filter>
</QtMoc>
<QtMoc Include="xxxx4.h">
<Filter>Header Files</Filter>
</QtMoc>
</ItemGrop>
至此,重新编译未报错。
事实上,应该是在以下界面创建qt的类:
添加->新建项->Qt->QtClass来新建Qt的类。
来源:VS + QT 出现 LNK2001 无法解析的外部符号 QMetaObject 的问题_vsqt无法解析的外部符号_逝水流年丶轻染尘的博客-CSDN博客