我有一个集成了一些 GTK 功能的库,我决定切换到 Qt。所以我创建了一个测试 cmake 文件来尝试集成 Qt5,但它不起作用,因为当我使用可执行文件动态加载库时,我得到“未定义的符号”。
undefined symbol: _ZN8UIWindow16staticMetaObjectE
我用谷歌搜索了很多,似乎没有那么简单的任何帮助,或者评论将不胜感激。
这是我使用的相关文件。
我有一个集成了一些 GTK 功能的库,我决定切换到 Qt。所以我创建了一个测试 cmake 文件来尝试集成 Qt5,但它不起作用,因为当我使用可执行文件动态加载库时,我得到“未定义的符号”。
undefined symbol: _ZN8UIWindow16staticMetaObjectE
我用谷歌搜索了很多,似乎没有那么简单的任何帮助,或者评论将不胜感激。
这是我使用的相关文件。
好的,我找到了解决方案。由于我对头文件和源文件使用不同的文件夹,因此我必须手动指定包含 qt 代码的文件在哪里。
QT5_WRAP_CPP( MOCS_HDRS ${INCLUDE_DIR}/UIWindow.h )
该错误表明您的 UIWindow 类的 MOC 文件未正确生成或构建。Qt 期望由 MOC (MetaObject Compiler, IIRC) 生成的类的某些元信息。
您的 CMake 脚本会打开通常有效的 automoc,因此我建议您查看 CMake 的输出,看看它是否正在为您的班级运行该步骤。