在Windows上构建恶意框架时对"DummyInputMethod3::staticMetaObject"的未定义引用

undefined reference to `DummyInputMethod3::staticMetaObject' when building maliit framework on windows

本文关键字:DummyInputMethod3 staticMetaObject 引用 未定义 Windows 构建 恶意 框架      更新时间:2023-10-16

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

从我通过谷歌发现的类似问题的答案来看,这通常是由于没有在头文件中定义qobject,忘记添加Q_OBJECT宏或moc没有正常运行造成的。这似乎不是这里的情况,DummyInputMethod3是在它自己的头中定义的:

class DummyInputMethod3 : public MAbstractInputMethod
{
    Q_OBJECT
    ...

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

头文件也列在概要文件中,因为它应该是:

HEADERS += 
    dummyimplugin3.h 
    dummyinputmethod3.h 

有什么问题吗?


编译时出现错误:

https://github.com/RHawkeyed/framework

在Qt Creator 3.5.0使用MinGW 4.9.2 32位和Qt 5.5.0

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


使用msvc编译

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

https://github.com/RHawkeyed/framework

Qt 5.5

MSVC2013 32位

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

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

我目前的进度在github上:

https://github.com/RHawkeyed/framework

https://github.com/RHawkeyed/plugins

相关文章:
  • 没有找到相关文章