XCode 编译器 Apple LLVM 3.1 与 LLVM GCC 4.2

Posted

技术标签:

【中文标题】XCode 编译器 Apple LLVM 3.1 与 LLVM GCC 4.2【英文标题】:XCode Compiler Apple LLVM 3.1 vs LLVM GCC 4.2 【发布时间】:2012-07-23 06:43:21 【问题描述】:

我下载了这个项目来试一试 (http://www.hatzlaha.co.il/150842/Lucas-Kanade-Detection-for-the-iPhone)。它还在 AppStore 上发布了版本。

当我下载源代码并编译时,它给出了编译错误。我将编译器更改为 LLVM GCC,它立即编译,没有任何错误或警告。

下面是我所做的:

在个人 iPhone 上下载了 Lucas Kanade 应用程序。按预期运行(即显示跟踪点和视频输出)。 在公司 iPad 上部署了上述编译的应用程序。这里显示了跟踪点(这意味着应用程序正在获取视频帧)但无法显示视频输出。

一般应用流程:

从相机中抓取一帧。 处理框架(跟踪点)。 输出帧,使屏幕看起来像正在显示相机源,正如预期的那样。

设备详情:

iPhone:操作系统 5.1.1 (9B206); iPhone 4; iPad:操作系统 5.1 (9B176); iPad 2;

问题

出现视频输出问题是因为操作系统版本不同还是因为使用了 GCC 编译器? 如果是编译器问题,是否可以将编译错误放在这里进行解决,还是我需要单独提出一个问题?

我知道这些信息可能还不够,因为有很多未知数,但相信我,深入了解应用程序的细节将是一个非常详尽的问题描述。让我知道猜测解决方案需要更多信息。我会在这里更新。

【问题讨论】:

【参考方案1】:

就像你已经说过的那样,信息还不够。我只能猜测。跟踪点的项目通常使用他们自己的驱动程序来访问相机。原因可能是它不能与 llvm 编译器一起使用。

如果您找到任何特定于 iPhone 的文件,请查看项目。它们主要是 dat 文件。也许您会在项目中找到一些预处理器宏,例如#ifdef target_iphone 之类的。在这种情况下,您可以联系生产商并请求 iPad 驱动程序。

我没有下载并尝试过该项目,但这只是一个猜测。

【讨论】:

感谢您的回复,但该项目似乎正在使用标准驱动程序。我在代码中找到了这些行。 AVCaptureSession *session = [自我会话]; AVCaptureDeviceInput *newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:[self backFacingCamera] error:nil]; AVFoundation 框架也包含在项目中。这些行让我相信它使用的是标准驱动程序,应该可以在 iPhone 和 iPad 上运行。对吗? 可能是opencv中的设置错误?例如屏幕分辨率?在初始化引擎(openCV)时,它应该设置一些参数或从设置文件中读取。 在过去的 1 小时里我遇到了一些更奇怪的事情。 - 我在项目中找不到任何 OpenCV 代码(听起来很傻,我知道)。没有 OpenCV 框架或源文件。 - 我从 iPad 上的 AppStore 下载了该应用程序,它按预期显示了视频输出。这让我相信一些本地因素正在影响项目(可能编译)。 为了避免混淆,这是一个基于 OpenCV 的项目,因为该应用程序的目标是演示 Lucas Kanade 光流。此外,我还可以看到诸如 cvGoodFeaturesToTrack 和 cvCalcOpticalFlowPyrLK 之类的函数,它们是 OpenCV 函数。只是我看不到库二进制文件的位置或这些标头的位置。 您是否尝试在 MyVideoBuffer.mm 文件的 initWithSession 方法中更改分辨率?由于 iPad 2 支持该分辨率,所以应该尝试一下。

以上是关于XCode 编译器 Apple LLVM 3.1 与 LLVM GCC 4.2的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 5 上使用 Boost - Apple LLVM 5.0

Xcode 5“缺少编译器规范 LLVM 4.2”错误

Apple LLVM 编译器 4.2 错误:没有这样的文件或目录

使用 arm-apple-darwin10-llvm-gcc-4.2 在 MacOS 上交叉编译问题

xcode5:构建时出现 Apple LLVM 5.1 错误

无法构建 xCode 项目:错误 Apple LLVM 9.0 错误组