如何在XCode 4.2中同时使用c++和objective-c

How to use c++ and objective-c together in XCode 4.2

本文关键字:c++ objective-c XCode      更新时间:2023-10-16

在开发iphone应用程序时,我很难将c++和objective-c结合在一起。我有一个第三方图书馆可以在应用程序中使用。我有一个计划,用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
}

是写的吗?

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

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

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

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

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

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

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

看看Cocoa_With_Carbon_or_CPP示例和Objective-C项目中使用C++的策略(反之亦然)文章。