我的 Qt 项目链接到一个仅限 linux 的库。当项目在 linux 下运行时,我希望使用该库中定义的类型在事件上触发信号。不过,我遇到的一个复杂问题是该项目还必须在 Windows 中构建。显然,这个信号和捕捉它的槽在 Windows 中是不存在的,这很好。但是,我发现 Qt 的 moc 工具无法识别#ifdef __linux__
发出信号的代码周围存在的问题。我的代码如下所示:
[一些文件.h]
#ifdef __linux__
signals:
void SomeSignal(SomeTypeDefinedInTheLinuxLibrary);
#endif
[一些文件.cpp]
#ifdef __linux__
emit SomeSignal(someObject);
#endif
当我尝试用 g++ 编译它时,我得到了错误:
SomeFile.cpp:(.text+0x858c): undefined reference to SomeFile::SomeSignal(SomeTypeDefinedInTheLinuxLibrary)
任何想法如何让 moc 和 #ifdefs 一起玩得很好?