Qt Visual Studio生成moc文件

文章目录

  • 背景
  • 原因
  • 解决方法一:
  • 解决方法二:

背景

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

原因

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

解决方法一:

在Visual Studio中对头文件使用自定义的生成命令
Qt Visual Studio生成moc文件_第1张图片

属性 内容 必须
命令行 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"

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

你可能感兴趣的:(Qt,qt,visual,studio,开发语言)