【问题标题】:How can I use my custom types (C++) in an objective-c project with xcode?如何在带有 xcode 的 Objective-C 项目中使用我的自定义类型 (C++)?
【发布时间】:2011-05-16 04:46:23
【问题描述】:

我编写了一些类来处理具有透明单位的数字,就好像它们只是整数或浮点数一样。简而言之:

SI_Term speed(4, "mph");
SI_Term distance(10000, "feet");
SI_Term time = distance / speed;
std::cout<<time.string();

并且所有主要的运算符都重载以这种方式工作。做了很多工作,所以我想在我的 ObjC iPhone 应用程序中使用 C++ 类。我尝试将它们与 .h 和 .mm 扩展名添加到我的 xcode 项目中,但它似乎没有将它们视为 C++ 文件。 (在我声明一个类或任何东西的任何地方都找不到任何 STL 标头、语法错误)。

新信息: 尝试了 .mm 和 .h 扩展名,错误: 在 .h 文件中: namespace DA 以及涉及 c++ 代码的所有其他内容(所有此消息大约有 40 个错误)给了我expected '=', ',', ';', 'asm' or '__attribute__' before ':' token

对于整个 c++ 文件中的所有 #include &lt;*&gt; 实例,我还获得了 *: No such file or directory

我确信它是某种简单的修复方法,但 .mm 和 .h 还不够。

更新: 发现将源代码复制并粘贴到新文件中似乎可行。 mm 文件(或 cpp 文件)编译。但是 h 文件不起作用,它会在任何出现 c++ 特定代码时引发上述错误。

谢谢!

【问题讨论】:

  • 请提供更多细节;返回的确切错误等。
  • @Jesse_Beder 我同意这几乎是同一个问题,但现在平台是 Xcode4,它似乎有足够的差异,我无法使用该问题的正确答案来解决我的问题。跨度>

标签: c++ objective-c xcode linker objective-c++


【解决方案1】:

您可能正在您的一个 .m 文件中包含(或导入)您的 h 文件。那些也需要重命名为 .mm。

最后,您可能会将所有 .m fike 命名为 .mm。顺便说一句,cpp 文件可以简单地保留 cpp。没有理由重命名它们。

【讨论】:

  • 你明白了。我只需要将项目中的所有文件都设为 mm 而不是 m。
【解决方案2】:

不确切知道您遇到的错误是什么,而不是将带有 .hpp 和 .cpp 扩展名的文件添加到您的项目中,我会将头文件的扩展名更改为仅 .h,并将扩展名更改为您的 .cpp 文件转换为 .mm 或 .M 以便 Xcode 将它们识别为 Objective-C++ 文件,并适当地编译它们。

【讨论】:

    猜你喜欢
    • 2013-09-07
    • 2014-10-23
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多