콘텐츠로 이동

C++에서 Swift 호출하기

Swift 컴파일러가 생성하는 C++ 헤더(ModuleName-Swift.h)를 #include하여 Swift API를 C++에서 사용한다. Clang에서만 컴파일 가능하며 C++17 이상 필요(C++20 권장).

생성 헤더

Swift 모듈은 C++ 네임스페이스로 매핑된다. MyModule::myFunction()처럼 접근.

Swift 타입의 C++ 표현

  • 기본 타입: Intswift::Int, Floatfloat, Boolbool
  • 구조체: 불투명 버퍼(alignas(N) char buffer[M]) 내장 C++ 클래스. 복사/소멸 자동 생성.
  • Resilient 타입: 크기에 따라 인라인 버퍼 또는 힙 할당(boxed).
  • Enum: C++ 클래스로 표현, 연관값 접근용 메서드 생성.
  • Class: ARC가 C++ 복사 생성자/소멸자에 통합.

지원 현황

기능 상태
최상위 함수 지원
구조체/enum/클래스 지원
프로퍼티 getter/setter 지원
제네릭 함수 부분 (제약 조건 없는 경우)
클로저, 프로토콜 타입 미지원

관련 파일

  • swift/lib/PrintAsClang/ — C++ 헤더 생성기
  • swift/test/Interop/SwiftToCxx/ — 테스트

관련 페이지: cpp-interop-overview, abi-mangling