Xcode编译控制台应用程序 - C编程

4

是否可以使用iPhone 3.1.3 SDK的Xcode编译标准的C程序,以便在iPhone上运行?我正在尝试使用Xcode编译基本的“hello world”,但无济于事。我需要获取额外的应用程序模板吗,还是我只是错过了什么?

4个回答

2
如果您的iPhone已越狱,那么请安装GCC和其他必要的软件(请参阅此页面http://antirez.com/page/iphone-gcc-guide.html)。使用gcc在设备上编译代码。
#include <stdio.h>

int main(void)
{
  printf("Hello World\n");
  return 0;
}

使用终端进行编译

gcc -c main.c -o hello.o

ld hello.o -e _main -o Hello

请记住,编译后的应用程序是本地控制台应用程序,不支持用户界面,因此只能从终端运行。


2
如果您使用锅炉板模板来创建一个可可应用程序,该模板使用NSApplicationMain和其他必要的结构来启动可可程序,那么您可以自由地开始编写C方法而不必接触Objective-C。注意事项:
1)为了测试目的,在使用Xcode时,最好选择“基于窗口的应用程序”模板,该模板在新项目的iPhone类别下提供。这是一个最小的模板,没有UI - 只有一个窗口。
2)在iPhone中没有“main()”。您必须将代码放置在“AppDelegate.m”文件中,实际上将是“[YourProjectName]AppDelegate.m”。在这里,您将找到一个方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    //YOUR CODE GOES HERE

    return YES;
}

这是一个很好的地方,可以调用你编写的C函数,你可以在源文件中完成,或者更好的做法是在一个单独的文件中使用#import。请注意,应用程序将阻塞,直到您的所有C代码执行完成。

3)我不认为有printf。很抱歉。获取信息的一种方法是使用NSLog - 但它期望使用Objective-C字符串而不是C字符串。因此,如果您想实际看到您的C程序的任何状态,请使用少量的Objective-C。相关代码如下:

char *your_char_pointer = //...gimme a string;
NSLog([NSString stringWithCString:your_char_pointer]);

这将把您的C字符串转换为Objective-C字符串,使NSLog能够轻松地将其打印到控制台上(在OSX应用程序中的实用程序文件夹中使用控制台应用程序查看)。

这样可以吗?


0

iPhone 不官方支持控制台应用程序。


0

我确定这可能是一个简单的答案,但你可以看看:'iPhone编程:大牛栏指南'。我自己也通过这本书学习过,它是一个很好的资源。

当然,你可以使用XCode编译标准的C程序,并将“Hello World”输出到控制台。但是,你没有提到是否想在iPhone/iPad/iPod Touch上运行此程序。

如果你只是想学习Cocoa,而不一定要在iPhone上运行,那么可以看看姊妹书籍:'Cocoa® Programming for Mac® OS X (3rd Edition)'。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接