我想在XCode上調用C++的代碼,我這這裡小結一下我的方法,Hello類只是為Objective-C調用C++做的一個封裝。
但是我感覺這樣太不方便了,如果C++的代碼很多的時候,這樣做就很不好,期待有人給出好的解決方案,文章最後有這個Demo的原始碼。
參考文章:http://blog.csdn.net/zhouhuiah/article/details/6426158
寫講解一下這個Demo的內容
1,建立一個項目,我選的是“Single View Application”,名字順便
2,建立一個Objective-C class檔案,取名為Hello
3,在項目中會出現兩個檔案,Hello.h和Hello.m檔案,將Hello.m檔案的尾碼名改為.mm,即Hello.mm
4,在Hello.h檔案內添加C++類,Hello.h檔案內容如下所示:
#import <Foundation/Foundation.h>@interface Hello : NSObject{ class NewHello{ private:int greeting_text; public: NewHello(){ greeting_text=5; } void say_hello(){ printf("Greeting_Text = %d",greeting_text); } }; NewHello *hello;}-(void)sayHellooooo;@end
5,在Hello.mm檔案中實現sayHellooooo方法,在這個方法中調用C++類
#import "Hello.h"@implementation Hello-(void)sayHellooooo{ hello = new NewHello(); hello->say_hello();}@end
6,最關鍵的地方,在需要調用C++類的地方,使用@class Hello,而不是#import 或者#include
#import <UIKit/UIKit.h>//#include "Hello.h"@class Hello;@interface ViewController : UIViewController{}-(void)aaaa;@end
7,實現調用C++類中的方法
#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; NSLog(@"dddddddd"); Hello *aa = [[Hello alloc]init]; [aa sayHellooooo]; // Do any additional setup after loading the view, typically from a nib.}- (void)viewDidUnload{ [super viewDidUnload]; // Release any retained subviews of the main view.}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);}-(void)aaaa{}@end
8,原始碼:Objective-C調用C++ 部落格園規定檔案名稱不能有加號