【问题标题】:Beginner questions regarding to "building a library", in Xcode on iPhone specifically关于“构建库”的初学者问题,特别是在 iPhone 上的 Xcode
【发布时间】:2010-10-15 09:34:29
【问题描述】:

我从来没有清楚地了解所有这些链接/构建/依赖业务。现在,我正在尝试将 FreeType 库(使用 C++)构建到 iPhone 的 *.a 库文件中(因为我尝试使用的另一个库 openFrameworks 将依赖于 FreeType)。

我知道要使用 iPhone 编译 C++,我只需将 *.cpp 重命名为 *.mm。 (我在 main() 中尝试了一些简单的程序并且它可以工作)但是我怎样才能在 Xcode 中构建库? (我想没有 main())

另一方面,如果你们能推荐一些关于此类链接/构建主题的书籍或文档,那就太好了,我发现自己最困惑。

PS。我已经获得了 Xcode 的付费版本和一些编译到 iPhone 上的示例应用程序。

【问题讨论】:

    标签: c++ iphone xcode linker


    【解决方案1】:

    首先,您无需重命名任何文件即可为 iPhone 编译 C++ 代码。其次,您需要为库创建一个单独的项目。看起来 iPhone 目标类型不包含“静态库”,因此您可能需要创建一个 Mac OS X 项目并对其进行修改以输出 ARM .a 文件。不是微不足道的,但可能是可行的。

    或者,如果您不打算在很多其他不相关的项目中使用此代码,您可以将源文件直接包含到您的 App 项目中。将它们全部收集到自己的组中,您几乎不会知道它们在那里。

    【讨论】:

      【解决方案2】:

      将 .cpp 文件重命名为 .mm 意味着它们将被视为 Objective-C++ 代码而不是 C++ 代码。我认为这不是一个好主意,即使它仍然可以工作。此外,FreeType 是用 C 编写的,而不是 C++。

      Google 搜索“编译器链接器”,您会发现很多关于它们如何工作的文档。这应该对文档有所帮助。

      完全可以为 iPhone 编译静态库;你不能做的是编译动态库或框架——你可以,但不鼓励这样做。

      1. 打开您的项目
      2. 在源/目标浏览器中,选择“目标”节点(带有红色和白色的小目标图标)。
      3. 右键单击节点,在弹出菜单中选择“添加”,然后选择“新建目标”。
      4. 打开一个对话框。在左侧,有一个 iPhone OS 和一个 Mac OS X 部分。 iPhone OS 部分应该已经被选中;如果不这样做。
      5. 您应该有三个目标选择,其中之一是静态库。选择它,点击确定。
      6. 在下一页中为库命名。点击完成。
      7. 您的“目标”节点现在包含一个用于您的静态库的子节点。您可以通过文件菜单添加源,也可以将其拖到“编译源”子节点上。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2011-01-12
        • 2018-01-08
        • 2022-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-06
        相关资源
        最近更新 更多