XcodeでSwiftからC++コードを呼び出すまで

  1. Xcode を立ち上げる
  2. Create new a Xcode project を選択
  3. iOS→Application→Single View Application
  4. Language=Swift
  5. Devices=iPhone
  6. Use Core Dataはチェックしない
  7. Source Controlはチェックする
  8. 適当な保存場所を選択
  9. 左側のファイルツリーでproject名のgroupのコンテキストメニュー(以下コンメニュー)→New Groupを選択→cppを追加
  10. 同じくobjcppを追加
  11. cpp Groupのコンテキストメニュー→New File…→C++ File を選択 Also create a header file はチェック
  12. 適当な保存場所を選択
  13. Would you like to configure an Objective-C bridging header? は Yes
  14. 出来たsourceとheaderにclassの記述を追加する
/*cpp.h*/

#ifndef __Test150108__cpp__
#define __Test150108__cpp__

#include <stdio.h>

class CCpp {
public:
    void test(void);
};
#endif /* defined(__Test150108__cpp__) */
/*cpp.cpp*/

#include "cpp.h"

void CCpp::test(void) {
    printf( "cpp excute\n");
}
  1. objcpp Groupのコンテキストメニュー→New File…→C++ File を選択 Empty Fileを選択
  2. 適当な保存場所を選択
  3. 出来た.mファイルを.mmに変更
  4. objcpp Groupのコンテキストメニュー→New File…→Header File を選択
  5. 適当な保存場所を選択
  6. 出来たファイルにcpp呼び出し処理を記述
/*objcpp.h*/
#ifndef Test150108_Header_h
#define Test150108_Header_h

#import <Foundation/Foundation.h>

@interface ObjCpp : NSObject
-(void)test;
@end

#endif
/*objcpp.mm*/
#import <Foundation/Foundation.h>

#import "objcpp.h"
#import "cpp.h"

@implementation ObjCpp {
    CCpp * cpp;
}

-(id)init {
    self = [super init];
    cpp = new CCpp();
    return self;
}

-(void)test {
    cpp->test();
}

@end
  1. product名-Bridging-Header.hファイルにObjective-CのHeaderのimportを記述
//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#import "objcpp.h"
  1. ファイルツリーからViewController.swiftを選択 Load処理にC++呼び出しを追加
/*ViewController.swift*/
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

/*ViewController.swift*/
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        var objcpp = ObjCpp()
        objcpp.test()
    }
  1. コマンドキー+rで実行
  2. Xcodeの右下のアイコンの右側が塗り潰されているアイコンを選択 コンソール出力を出す
  3. test()のprint文の内容が出力されていたら、成功


参考
SwiftプロジェクトでC++を使う方法メモ - Qiita