如何手动将 Qt .rep 复制到 .h,然后将它们 moc 到 .cpp

Posted

技术标签:

【中文标题】如何手动将 Qt .rep 复制到 .h,然后将它们 moc 到 .cpp【英文标题】:How to manually repc Qt .rep to .h and then moc them to .cpp 【发布时间】:2019-02-15 23:34:42 【问题描述】:

我试图在我的.rep 文件上手动调用repc,然后在头输出文件上运行mocrepc 运行成功,但moc 随机抱怨一个

在 '(' 处解析错误

Q_CLASSINFO 声明之后。以前有人见过这个问题吗?

示例

remoteminimal.rep

class RemoteMinimal

    SIGNAL(sendData(const QString &, const QString &));
    SLOT(void printData(const QString &));
    SLOT(void process(const QString &, const QString &));
    SLOT(void triggerSendData());
;

repc -i rep remoteminimal.rep -o replica rep_min_test.h

然后

moc -o moc_rep_min_test.cpp rep_min_test.h

你会得到以下错误:

rep_min_test.h:20:“(”处的解析错误

【问题讨论】:

除了提供有问题的 .rep 示例之外,您还可以详细解释您使用的步骤 上面添加的例子 我建议在您的问题中发布代码,而不是依赖外部资源,例如,我可以在某个时候删除我的存储库,您的问题可能会变得无法使用 【参考方案1】:

问题是你没有链接 Qt,所以 MOC 没有找到一些定义。对于这些情况,我更喜欢分析 qmake 生成的代码,并在以下片段中:

/usr/bin/moc ... rep_remoteminimal_replica.h -o moc_rep_remoteminimal_replica.cpp -I /usr/include/qt -I /usr/include/qt/QtRemoteObjects

你看到链接了/usr/include/qt:

moc -I/usr/include/qt rep_min_test.h -o moc_rep_min_test.cpp 

【讨论】:

太好了,谢谢。 moc 是否存在抱怨 lib 无法访问的“调试”或详细模式? 不,只是通过擦除代码来分析 :-) 并分析什么是必要的,然后只是分析为什么它是必要的

以上是关于如何手动将 Qt .rep 复制到 .h,然后将它们 moc 到 .cpp的主要内容,如果未能解决你的问题,请参考以下文章

Qt - 如何将 Qt 运行时 DLL 复制到输出路径

如何将用QT做好的播放器移植到ARM开发板上

如何将文件从源目录复制到qt中的目标目录

如何将 XIB 复制到另一个项目?

如何将 Dbase 数据库实时复制到 MYSQL?

cmake qt5_generate_repc() 将 rep 标头放在 CMAKE_CURRENT_BINARY_DIR