为什么这个Objective-C ++程序没有编译?

时间:2014-08-30 02:42:07

标签: xcode objective-c++

我正在使用sfml来编写游戏,我认为,因为我在Xcode工作,我会制作一个Mac版本和一个Windows版本。在mac verision中,我认为利用NSMenu制作游戏菜单会更好。这是我到目前为止在一个名为main.mm的文件中尝试过的:

#include <iostream>
#import <AppKit/AppKit.h>

void Launch()
{
    NSMenu* menu = [[NSMenu alloc] initWithTitle:@"string"];
}

int main()
{
    std::cout << "Mac main\n";
    Launch();
}

代码无法编译。 Xcode没有在代码本身中显示任何错误。知道为什么这不起作用吗?

1 个答案:

答案 0 :(得分:1)

您必须{main} return。此外,如果您使用的是AppKit,则应调用NSApplicationMain()。对于游戏,这意味着您使用C ++编写游戏,并从Objective-C类调用C ++代码。

int main(int argc, char **argv)
{
    std::cout << "Mac main\n";
    return NSApplicationMain(argc, argv);
}

要调用您的C ++代码,我将创建一个应用程序委托并从-applicationDitFinishLaunching:启动您的C ++代码。您可以在主nib文件和菜单中创建应用程序委托。

我不知道如何与SFML集成。我要么使用NSMenu和AppKit,要么使用SFML并避免使用Objective C.。