与小牛队在Qt中的Objective-C

The*_*ght 5 c++ macos qt objective-c osx-mavericks

我一直在Qt中使用Objective-C与C++混合而没有任何问题; 在需要时使用.mm文件.

在将我的构建机器升级到Mavericks之后,我最初注意到框架头文件丢失了,因此安装了XCode命令行工具,修复了这个问题.

现在,我在编译Objective-C文件时遇到问题,错误抱怨框架中的代码.例如: -

系统/库/框架/ Foundation.framework/Versions/C/Headers/NSUserNotification.h:16:44:错误:在枚举器之间缺少','NSUserNotificationActivationTypeReplied NS_AVAILABLE(10_9,NA)= 3

/System/Library/Frameworks/AppKit.framework/Versions/C/Headers/NSApplication.h:58:34:错误:预期';' 在顶级声明符之后typedef NSInteger NSModalResponse NS_AVAILABLE_MAC(10_9);

我已升级到Qt 5.2.1,但问题仍然存在,而且它来自包括标准框架标题; 在这种情况下: -

#import <NSUserNotification.h>
#import <NSApplication.h>
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下小牛队的变化以及如何解决这些错误吗?

Rei*_*ica 6

应该将框架包含在Framework/Header.h中.您似乎已经在项目文件中添加了一些不必要的包含.

以下适用于我:

#project.pro
TEMPLATE = app

LIBS += -framework AppKit -framework Foundation

OBJECTIVE_SOURCES = main.mm
Run Code Online (Sandbox Code Playgroud)
//main.mm
#import <Foundation/NSUserNotification.h>
#import <AppKit/NSApplication.h>
#include <QCoreApplication>

int main(int argc, char ** argv)
{
   QCoreApplication a(argc, argv);
   NSApplication * app = [NSApplication sharedApplication];
   return 0;
}
Run Code Online (Sandbox Code Playgroud)