项目场景:
项目场景:windows环境下编译github开源项目;VS2022;Qt5.12.12;
问题描述
VS编译报错信息如下:
mocs_compilation_Debug.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class QString __cdecl QMetaObject::tr(char const *,char const *,int)const " (__imp_?tr@QMetaObject@@QEBA?AVQString@@PEBD0H@Z),函数 "public: static class QString __cdecl QMLPlayer::tr(char const *,char const *,int)" (?tr@QMLPlayer@@SA?AVQString@@PEBD0H@Z) 中引用了该符号
原因分析:
从QtObject派生的类中使用了宏Q_OBJECT,宏展开后Qt中的接口不识别;
查看发现正确生成了moc_xxx.cpp文件,所以排除此情况;
查看Qt安装目录的静态库为.a文件,非.lib文件,猜测是没有lib文件导致编译失败。
Qt安装了MinGW编译器版本导致未生成.lib文件,修改Qt为msvc编译器版本后问题解决。
解决方案:
修改Qt为msvc编译器版本,重新构建项目并编译。