【问题标题】:Using C++ namespaces in objective C在目标 C 中使用 C++ 命名空间
【发布时间】:2011-06-02 07:28:30
【问题描述】:

我正在开发一个需要使用 C++ 实现的第三方库的项目。我已经成功地将库添加到我的 xcode 项目中,但问题是库中的类包含命名空间,当我尝试通过命名空间访问方法时,XCode 会生成一个错误:“utils undeclared”。 “utils”是我尝试使用的命名空间。

我的问题是,有没有办法在 ObjectiveC 中使用 C++ 命名空间?

我用来调用该方法的代码是: utils::method();

我已尝试将我的 ObjectiveC“.m”文件重命名为“.mm”文件,但问题仍然存在。

【问题讨论】:

  • 关于 3rd 方库,您可以使用静态库(而不是 dylibs)。
  • @Daniel 为什么他们不喜欢 3rd 方库?它们很常用。
  • @Nektarios - 我听说有些提交因为使用了第 3 方库而被拒绝。听说过,所以我不确定这是不是真的
  • @Daniel 只要你静态链接它是完全常见和可接受的
  • #include "…"相关的头文件了吗?

标签: objective-c


【解决方案1】:

我们在 Objective-C 中使用 C++ 库,使用 C++ 命名空间没有问题。正如 Mustafa 所指出的,您需要将 Objective-C 文件扩展名更改为 .mm 以让 XCode 将该文件识别为 Objective-C++。然后你只需要#include(而不是#import)包含 C++ 命名空间声明的 C++ 头文件 - 这就像你通常对“普通”C++ 所做的那样。

【讨论】:

  • 哦,顺便说一句,我使用的是 XCode 3.2.6 - 也许您使用的是 XCode 4,它在这方面的工作方式不同?
猜你喜欢
  • 2013-09-28
  • 2011-05-05
  • 2014-07-17
  • 1970-01-01
  • 2011-01-02
  • 2013-09-27
  • 2011-07-15
  • 2012-11-22
相关资源
最近更新 更多