0

背景

我正在尝试使用LSGetApplicationForURLAPI 并在这里找到了一个非常有用的示例 -如何在 mac os x 上获取默认邮件客户端版本?

但是,当我尝试编译代码时,出现此错误:

/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:53:错误:声明未声明任何内容

当我在第 53 行附近打开 MachineExceptions 时,我看到了unsignedwide一些MacTypes.h. 我发现这是碳核心框架的一部分。

对于初学者,我只在我的代码中包含顶级标题(实际上,使用上面示例中的确切示例代码)。所以,我不包括/接触MachineException.h或任何其他头文件。虽然,显然似乎存在一些最终导致此错误的依赖项。

我尝试/研究过的一些事情:

  1. 我发现 Carbon Core 在 10.8(我正在使用的版本)中已被弃用 - https://developer.apple.com/library/mac/#releasenotes/General/CarbonCoreDeprecations/ 结果,MacTypes.h在 Carbon Core框架相当贫乏,有条件地包含MacTypes.h在 /usr/include/
  2. 根据上面“已弃用”页面上的信息,我已尝试编辑MacTypes.h(在 Carbon Core 框架中)和 MachineExceptions.h 以包含 /usr/include 中的 MacTypes。
  3. 切换了包含头文件的顺序(在我研究这个时为其他人工作)。
  4. 我在我的 makefile 中包含了 CoreFoundation 和 ApplicationServices 框架(使用“-framework”选项)

非常感谢有关此问题的任何反馈,因为我花了很多时间试图解决这个问题。如果这里有什么是基本的/基本的,我提前道歉。我对 Mac OS 编程非常陌生,并试图了解框架是如何连接的,以及如何使用它们。

谢谢!

4

1 回答 1

1

您得到的错误似乎是某些宏定义的结果。您是否LR在代码中的某处或项目的预处理器定义中定义了宏?查看 MachineExceptions.h 第 42 行中关于CR. 看起来你有类似的东西。
无论如何,我已经使用默认命令行工具项目成功编译了示例中的代码。因此,您的项目配置中可能存在错误。

于 2013-06-11T06:12:13.987 回答