我想编译需要 QApplication 具有 commitData() 以及 saveState() 成员函数的 QGis。想一想,它们被放入预处理器 if 语句中:
#ifndef QT_NO_SESSIONMANAGER
void commitDataRequest(QSessionManager &sessionManager);
void saveStateRequest(QSessionManager &sessionManager);
#endif
但是QT_NO_SESSIONMANAGER
已定义且这些函数未声明,也未定义。当我#undef qapplication.h 中的宏时,我收到未定义的引用错误。所以,看来我应该用另一种方式解决这个问题。我怀疑我使用的 Qt 配置是否有问题,因为会话管理器是在预构建的 Qt 库中定义的,但它不在我编译的 Qt v4.8.2.2 的 Qt 中。也有可能我应该向 qmake 或 gcc 发送一些参数来定义/取消定义这个宏。我在网上和 stackoverflow 上搜索了一段时间的相关资料,但没有找到答案。