lex*_*hou 3 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: 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;
}
Run Code Online (Sandbox Code Playgroud)
它按预期运行,一个新的空窗口,但如果我使用命令行在终端下编译它:
$ g++ test.mm -framework Cocoa
$ ./a.out
Run Code Online (Sandbox Code Playgroud)
没有窗口,它会在[app run]轻而易举.
我做错了吗?为什么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
Run Code Online (Sandbox Code Playgroud)
然后从命令行运行cli.app/Contents/MacOS/cli,您的进程将显示为正在运行的应用程序.
| 归档时间: |
|
| 查看次数: |
2592 次 |
| 最近记录: |