未定义的引用`DummyInputMethod3 :: staticMetaObject'在Windows

时间:2015-09-03 14:42:56

标签: c++ qt

所以我试图在Windows机器上使用Qt Creator构建Maliit Framework https://github.com/maliit。到目前为止,我已修复了几个Windows兼容性问题:https://github.com/RHawkeyed/framework。但是现在我收到了这个错误:qobject.h中的undefined reference to 'DummyInputMethod3::staticMetaObject'

从我通过谷歌找到的类似问题的答案,这通常是由于没有在标题中定义qobject,忘记添加Q_OBJECT宏或moc无法正常运行。这似乎不是这种情况,因为DummyInputMethod3在它自己的头文件中定义:

class DummyInputMethod3 : public MAbstractInputMethod
{
    Q_OBJECT

    ...

moc_dummyinputmethod3.cpp是在我期望的路径中生成的。

头文件也列在pro文件中,应该是:

HEADERS += \
    dummyimplugin3.h \
    dummyinputmethod3.h \

关于可能出错的任何想法?

在编译时遇到错误:

https://github.com/RHawkeyed/framework

在Qt Creator 3.5.0中使用MinGW 4.9.2 32bit和Qt 5.5.0

qmake文件使用了几个linux命令,因此我将cygwin https://www.cygwin.com/添加到系统路径中。

使用msvc进行编译

我没有绑定到特定的编译器,我只需要为windows编译。使用msvc进行编译是完全可以接受的。实际上我开始尝试使用msvc进行编译,但在遇到一些问题并看到它意味着用mingw编译的建议之后我尝试了。无论如何,我现在可以在mingw和msvc中编译同样的错误:

https://github.com/RHawkeyed/framework

在Qt Creator 3.5.0中

Qt 5.5

MSVC2013 32位

1 个答案:

答案 0 :(得分:0)

我相当确定我已正确解决了这个特殊问题。 Windows dll需要导入/导出。它会在linux上自动发生。因为maliit是跨平台的。

我仍然没有maliit键盘正常工作。示例应用程序启动,但我无法显示键盘。无论如何,这是另一个问题,即如果我不完全放弃这个问题。

我目前的进展是在github:

https://github.com/RHawkeyed/framework

https://github.com/RHawkeyed/plugins

相关问题