使用LLVM gcc 4.2导致因ARC而导致符号问题的核心图

时间:2012-06-07 19:58:08

标签: iphone ios5 automatic-ref-counting core-plot llvm-gcc

我正在尝试按照core-plot方向将these安装到我的iPhone项目中。 Coreplot要求我使用LLVM gcc 4.2编译器,这会导致符号问题。

因为我使用的是LLVM gcc 4.2,所以@autorelease表示法会在main.m中产生错误“'''token'之前的预期表达式。

int main(int argc, char *argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }

}

因此我摆脱了@autoreleasepool表示法并将main更改为如下所示。

int main(int argc, char *argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    [pool release];
    return retVal;
}

然而,由于我使用ARC,这会导致'NSAutoreleasePool不可用'错误。所以我将-fno-objc-arc编译器标志添加到main.m,这给了我和“无法识别的命令行选项”-fno-objc -arc“错误。

在我的项目中使用ARC时,有没有办法解决使用LLVC gcc 4.2引起的符号问题?

1 个答案:

答案 0 :(得分:0)

ARC不能与gcc-llvm一起使用。你有几个选择。您可以将CorePlot单独构建为静态库并将其链接到您的项目中。您甚至可以将CorePlot项目文件嵌入到您的项目中,并将其构建为具有自己的构建配置的依赖项。你也可以将CorePlot切换到clang。一旦我删除了自定义C选项,我就得到了1.0。 ARC很好地集成了非ARC代码。