2013-05-06 29 views
0

我有一个集成了一些GTK函数的库,我决定切换到Qt。 所以我创建了一个测试cmake文件来尝试集成Qt5,但它不起作用,因为当我使用可执行文件动态加载库时,我得到“未定义的符号”。在库中使用Qt5

undefined symbol: _ZN8UIWindow16staticMetaObjectE 

我GOOGLE了很多,它似乎不是那么简单的任何形式的帮助,或评论将不胜感激。

Here是我使用的相关文件。

回答

2

好的,我找到了解决方案。由于我为头文件和源文件使用了不同的文件夹,因此我必须手动指定包含qt代码的文件的位置。

QT5_WRAP_CPP(MOCS_HDRS ${INCLUDE_DIR}/UIWindow.h)

+0

你可以接受你自己的答案我认为。 – 2013-05-07 13:32:54

+0

这是一个吗?汽车的限制? – paulm 2014-04-13 22:09:56

1

该错误表示您的UIWindow类的MOC文件未生成或未正确构建。 Qt预计由MOC(MetaObject编译器,IIRC)生成的类的某些元信息。
你的CMake脚本打开automoc,通常可以工作,所以我建议你看看CMake的输出,看看它是否正在为你的课程运行该步骤。

+0

好的。我检查了构建文件夹,我有一个文件libtest_automoc.cpp(另外还有其他文件:libtest.so等)。但是这个文件几乎是空的,所以mocs的生成可能会出现问题。 '/ *这个文件是自动生成的,不要编辑*/ enum some_compilers {need_more_than_nothing};' – Athanase 2013-05-06 12:29:09

+0

@Athanase - 我期望在您的构建位置也有一个moc_UIWindow.cpp文件 - 并且该文件不应该是空的,生成的代码。 – 2013-05-06 12:38:35

+0

嗯,我不知道为什么......我看了一个这[post](http://www.kdab.com/using-cmake-with-qt-5./)和这个[示例](https:/ /bitbucket.org/klaim/aos_qt5/src/593c195c4c6889f6968d68fca018ef425783a063/tools/aosdesigner/CMakeLists.txt?at=wip_qt5)但它没有帮助我。 – Athanase 2013-05-06 12:43:35