출처 : https://jk2b.tistory.com/5

swift에서 C++ 소스를 바로 사용할 수 없기 때문에 c++ 소스를 objective c 소스로 wrapping 해주어야 한다. 이때 wrapping 된 소스를 objective c++ 라고 한다.

예시

헤더파일 (*.hpp)

#include <stdio.h>
#include <iostream>

class MyCpp{
public:
    MyCpp();
    ~MyCpp();
    
public:
    void sayHello();
};

구현 파일 (*.cpp)

#include "MyCpp.hpp"

MyCpp::MyCpp(){}
MyCpp::~MyCpp(){}

void MyCpp::sayHello()
{
    std::cout<<"Hello world!!"<<std::endl;
}

다음 과같은 c++ 소스를 swift 에서 사용하기 위해서는

Objective C 로 warpping 하기

*.h를 작성해 주어야함

#import <Foundation/Foundation.h>

@interface CWrapper: NSObject
- (void) helloWorld;
@end

*.mm 작성하기

#import "CWrapper.h"
#include "MyCpp.hpp"

@interface CWrapper()
@property MyCpp *cppItem;
@end

@implementation CWrapper
-(instancetype) init{
    self = [super init];
    self.cppItem = new MyCpp();
    return self;
}

-(void) helloWorld{
    self.cppItem->sayHello();
}
@end

BridgeHeadder 파일에 Objective C 파일 헤더를 등록하고 사용하면됨.

import UIKit

class ViewController: UIViewController {
    let wrapper = CWrapper()
    override func viewDidLoad() {
        super.viewDidLoad()
        self.wrapper.helloWorld()
        // Do any additional setup after loading the view.
    }
}