【问题标题】:How to use c++ and objective-c together in XCode 4.2如何在 XCode 4.2 中同时使用 c++ 和 Objective-c
【发布时间】:2012-03-04 06:32:28
【问题描述】:

在开发 iphone 应用程序时,我很难将 c++ 和 Objective-c 结合在一起。我有一个 3rd 方库可以在应用程序中使用。我有一个计划使用 c 或 c++ 来包装库,然后使用 Objective-c 来调用它。在我用 c++ 完成课程后,我在 Objective-c 中使用它时遇到了麻烦。有没有示例代码?谢谢。

在objective-c头文件中。我写

#import <UIKit/UIKit.h>
#import "ZJTConstants.h"
#include "TTSAdapter.h"

class Adapter;
@interface ZJTVBlogViewController : UIViewController {
@private
    Adapter* adapter;
}
@end

在 mm 文件中,我写:

if (self) {
    adapter = Adapter::getInstance();
    // Custom initialization
}

是写的吗?

【问题讨论】:

  • 看来您确实在使用.mm 文件,那么,有什么问题吗?你还没有告诉我们你面临什么问题。
  • 它说有一些编译错误,所以我想知道语法是否有问题。
  • 你修好了吗?如果不是,请准确说明“某些编译错误”是什么。
  • 谢谢,还没有修复。但原因是项目中的库文件没有模拟器编译需要的i386版本。我正在寻找一个。

标签: c++ objective-c ios xcode4.2


【解决方案1】:

在 XCode 中有一个标志可以将所有文件编译为 Objective-C++。我用它来将庞大的 C++ 库编译成 iOS 程序。

如果您查看“构建设置”,则有一个地方写着“将源编译为”。那里有一个下拉菜单,您可以在其中选择 Objective-C++。在 clang/gcc 命令行中,我认为它是“-x objective-c++”。

【讨论】:

  • 大小无关紧要您只需将扩展名更改为 .mm 到包含 C++ 代码的类...
  • @HikmatKhan 我的建议是,有时重命名文件,尤其是在大型(多人)项目中并不是一个真正的选择。
  • @kevlar 如果您查看“构建设置”,则有一个地方写着“将源编译为”。那里有一个下拉菜单,您可以在其中选择 Objective-C++。在铿锵声中,我认为它是“-x objective-c++”
【解决方案2】:

只需将文件重命名为具有扩展名.mm 而不是.m

要将 C++ 代码与 Objective-C 代码混合,您将需要 Objective-C++ 编译器。 XCode 默认使用 Objective-C 编译器编译 .m 文件,使用 Objective-C++ 编译 .mm 文件。

【讨论】:

    【解决方案3】:

    从 Objective-C 代码调用 C++ 代码需要以 .mm(而不是 .m),以便使用 Objective-C++ 编译器。

    此编译器可以理解 C++ 和 Objective-C。

    换句话说,ObjC++ 编译器让您可以将 C++ 代码直接放入 Objective-C 方法,反之亦然。

    看看Cocoa_With_Carbon_or_CPP exampleStrategies for Using C++ in Objective-C Projects (and vice versa)的文章。

    【讨论】:

      猜你喜欢
      • 2011-02-10
      • 2012-08-05
      • 2012-01-13
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 2013-03-28
      相关资源
      最近更新 更多