【问题标题】:How to add C/C++ functions to Objective-C code (iphone related)如何将 C/C++ 函数添加到 Objective-C 代码(iphone 相关)
【发布时间】:2011-07-01 17:54:16
【问题描述】:

我在我的 Xcode 项目中添加了带有 C 函数的 .h/.cpp 文件。如何在 Objective-C 函数中调用 C 函数?

当我将 C 文件 (#import "example.h") 包含在应用程序委托头文件中时,它会因错误而爆炸(可能是将 cpp 文件视为 Objective-c),即使它在不包含的情况下编译得很好/导入。

谢谢

编辑:将所有文件从 m 重命名为 mm 解决了这个问题。但是,我在构建时遇到链接器错误(ld:重复符号)......首先更好地研究一下。再次感谢大家。

【问题讨论】:

  • 这通常“有效”。如果你能分享它“爆炸”的错误消息会很有帮助。
  • 您可能想尝试使用#include 而不是#import。

标签: iphone objective-c c xcode ios4


【解决方案1】:

如果您想在 Objective-C 模块中使用 C++,请将文件扩展名从 .m 更改为 .mm

【讨论】:

    【解决方案2】:
    • 在 Objective-C 中使用纯 C 只是 将头文件/源文件包含为 通常并调用函数。 C 文件可以使用标准扩展名 .h.c。许多 图书馆已经以这种方式使用 比如 libxml 和 sqlite。

    • 编写可以使用的 C 代码 Objective-C(访问 FoundationFramework) 它需要 放在.m 文件中。一个.m 文件 可以包含所有 C 函数,就像 用 new 生成的 main.m 项目。

    • 要调用 C++ 代码,C++ 可以位于 .cpp(或其他有效的扩展名)但是 你的 Objective-C 文件需要 扩展.mm 调用它,一次 再次简单地包含头文件。 并在 a 中使用 Objective-C C++ 类需要.mm 扩展名。

    【讨论】:

      【解决方案3】:

      C 函数应该可以在不做任何特殊操作的情况下调用。 Objective-C 是 C 的超集。

      如果标头包含 C++ 内容,那么您需要将文件编译为 Objective-C++ 而不是 Objective-C。为此,只需将文件扩展名从 .m 更改为 .mm

      【讨论】:

        猜你喜欢
        • 2012-09-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-20
        • 1970-01-01
        • 2014-03-21
        • 2012-07-07
        • 1970-01-01
        • 2011-12-13
        相关资源
        最近更新 更多