Cocoa 在C+下创建一个NSWindow+;

Cocoa 在C+下创建一个NSWindow+;,cocoa,objective-c++,Cocoa,Objective C++,我做了一个简单的实验,用Xcode编写了以下代码: int main(int argc, char** argv) { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; NSApplication* app = [[NSApplication alloc] init]; NSWindow* window = [[NSWindow alloc] initWithContentRect:

我做了一个简单的实验,用Xcode编写了以下代码:

int main(int argc, char** argv)
{
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    NSApplication* app = [[NSApplication alloc] init];
    NSWindow* window = [[NSWindow alloc] 
        initWithContentRect: NSMakeRect(0, 0, 640, 480)
        styleMask: NSTitledWindowMask | NSMiniaturizableWindowMask
        backing: NSBackingStoreBuffered
        defer: NO];
    [window setTitle: @"New Window"];
    [window center];
    [window makeKeyAndOrderFront:nil];
    [app run];
    [pool release];
    return 0;
}
它按预期运行,出现一个新的空窗口,但如果我使用命令行在terminal下编译它:

$ g++ test.mm -framework Cocoa
$ ./a.out
在[应用程序运行]时,它将在没有窗口的情况下轻松运行

我做错了吗?为什么它在Xcode和命令行之间有不同的行为?有人能告诉我如何在命令行中实现相同的行为吗


提前谢谢。

在10.7.2机器上编译代码对我来说很好。。。该窗口将显示(尽管在我的终端窗口后面,并且不会显示为正在运行的应用程序)

如果你想让你的应用程序显示为一个在dock中运行的进程,那么它必须正确地打包在一个.app包中。如果您执行以下操作:

g++ test.mm -framework Cocoa
mkdir -p cli.app/Contents/MacOS
cp a.out cli.app/Contents/MacOS/cli

然后从命令行运行
cli.app/Contents/MacOS/cli
,您的进程将显示为一个正在运行的应用程序。

很酷,它可以工作,谢谢,我将在苹果的开发者库中阅读更多关于bundle的信息。很酷,谢谢!但由于某些原因,我的窗口无法被选中(使用鼠标)-它始终保持灰色。有什么想法吗?