Qt Visual Studio生成moc文件

  • Post author:
  • Post category:其他




背景

  1. Qt Creator转Visual Studio工程。
  2. 当添加一个新的类时, 且继承自QObject时, 回出现编译报错:
无法解析的外部符号:qt_metacall metaObject(void) const qt_metacast



原因

这是因为在此程序中使用了Q_OBJECT宏,这个宏是Qt对C++的扩展。需要要先使用Qt提供的moc程序生成moc文件,然后再用C++编译器编译此文件,才能正常链接



解决方法一:

在Visual Studio中对头文件使用自定义的生成命令

在这里插入图片描述

属性 内容 必须
命令行 C:\Qt\5.15.2\msvc2019_64\bin\moc.exe “%(FullPath)” -o “moc_%(Filename).cpp” Y
说明 optional N
输出 moc_%(Filename).cpp Y
向项类型添加输出 C/C++ 编译器 Y

编译后会自动生成相关的moc_xxx.cpp文件。



解决方法二:

使用moc.exe 命令行的方式手动转换

C:\Qt\5.15.2\msvc2019_64\bin>moc.exe  "xxx.h" -o "moc_xxx.cpp"

但是这一步操作没有成功。如果需要转换的文件大, 可以写成脚本,批量的转换。



版权声明:本文为wjjontheway原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。