c++ - 关于 "building a library"的初学者问题,特别是在 iPhone 上的 Xcode 中

标签 c++ iphone xcode linker

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

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

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

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

最佳答案

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

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

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

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

希望对您有所帮助。

关于c++ - 关于 "building a library"的初学者问题,特别是在 iPhone 上的 Xcode 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/680561/

相关文章:

c++ - 函数参数的默认参数是否被视为该参数的初始值设定项?

ios - Youtube 视频无法在 iOS 8 中以横向模式播放

iphone - 从 SQLITE 数据库中删除数据的 Objective-C 问题 - 结果代码 5

iphone - 如何才能显示细条纹背景?

C异常无效输出

c++ - std::map:使用键类以外的参数重载 operator<

c++ - 通过引用传递 std::optional<T> 是否实际上节省了复制?

c++ - 无法在 OS X 上包含 opencv3

objective-c - 按分隔符拆分字符串

ios - swift 2 错误 : Editor placeholder in sourcefile