본문으로 건너뛰기
피드

Swift에서 FFI 없이 C++ 라이브러리 Dear ImGui 래핑하기

open-source 약 3분

Swift 5.9의 C++ interoperability 기능을 활용해 Dear ImGui를 FFI 없이 Swift에서 직접 래핑하는 과정을 보여주는 글. Clang Importer의 C++ 키워드 문제를 interoperabilityMode 설정 하나로 해결함.

  • 1

    Dear ImGui(C++)를 Swift 프로젝트에 통합하는 데모

  • 2

    Clang Importer가 C++ 키워드를 인식 못하는 문제 발생

  • 3

    Swift 5.9의 interoperabilityMode 설정으로 C++ 상호운용 활성화

  • 4

    C 프로젝트 래핑과 거의 동일한 수준의 간단한 과정

  • 이전에 Swift로 C 프로젝트(Raylib)를 연동하는 글을 썼는데, C++ 프로젝트 연동도 보여달라는 요청이 많았음
  • 이번엔 Dear ImGui(C++ GUI 라이브러리)를 Swift 프로젝트에 통합해봤음. Raylib은 윈도우 초기화와 텍스트 렌더링, ImGui는 GUI 드로잉 담당
  • 프로젝트 구조는 Raylib 때와 거의 동일함. 정적 빌드된 Dear ImGui와 rlImGui(Raylib-ImGui 브릿지) 헤더를 포함시키고, module.modulemap으로 Clang 모듈과 Swift 사이를 연결해줌
  • 문제는 Swift의 Clang Importer가 C++ 키워드(namespace, class, template 등)를 만나면 패닉을 일으킨다는 것. C는 되는데 C++은 안 되는 이유가 이거였음
  • Swift 5.9부터 interoperabilityMode 빌드 설정으로 C++ 상호운용이 가능해짐. 패키지 설정에서 해당 옵션만 켜주면 컴파일이 정상적으로 됨
  • 결론적으로 C++ 프로젝트인 Dear ImGui 래핑도 Raylib 래핑만큼 간단했음. 차이점은 C++ interoperability 설정 한 줄 추가한 것뿐

원문 링크

Swift의 C++ 상호운용성이 5.9부터 실용적 수준에 도달했으며, 설정 한 줄로 C++ 라이브러리를 네이티브처럼 사용할 수 있다는 점이 인상적

댓글

댓글

댓글을 불러오는 중...

open-source

뱀부랩, 오픈소스 슬라이서 개발자에게 법적 압박 걸었다가 역풍 맞음

3D 프린터 제조사 뱀부랩이 OrcaSlicer-BambuLab 개발자에게 중단 요구서를 보내면서 오픈소스와 수리권 커뮤니티의 반발을 샀다. GamersNexus와 Louis Rossmann은 개발자의 허락을 받아 소프트웨어를 다시 호스팅하고, 소송이 걸리면 각각 1만 달러씩 법률 지원을 하겠다고 나섰다.

open-source

OrcaSlicer 포크, Bambu Lab 프린터의 인터넷 연결 기능 되살림

FULU Foundation의 OrcaSlicer-bambulab 포크가 Bambu Lab 프린터에서 LAN 전용 제한 없이 BambuNetwork 기반 인터넷 연결을 다시 지원한다고 밝힘. Windows에서는 WSL 2 설정이 필요하고, Linux에서는 일반 설치만으로 충분하다고 안내함.

open-source

코넬대가 공개한 정확히 2,000줄짜리 교육용 운영체제

코넬대 기반 프로젝트인 egos-2000은 학생이 교육용 운영체제 전체 코드를 직접 읽을 수 있게 만드는 걸 목표로 한다. C, 헤더, 어셈블리, make 파일을 합쳐 정확히 2,000줄이며, QEMU와 RISC-V 보드에서 동작하고 9개 코스 프로젝트가 붙어 있다. 운영체제 수업에서 ‘작지만 전체 구조가 보이는 코드베이스’가 필요했던 사람에게 꽤 반가운 자료다.

open-source

이맥스가 Git 대신 Bazaar를 붙잡았던 6년짜리 오픈소스 드라마

이맥스는 2008년 CVS에서 벗어나면서 Git 대신 GNU 프로젝트인 Bazaar를 선택했고, 이 결정은 성능 벤치마크와 개발자 반발을 압도한 정치적 판단에 가까웠다. Bazaar는 느리고 유지보수도 흔들렸지만, GNU 패키지는 GNU 도구를 써야 한다는 원칙 때문에 전환은 2014년까지 미뤄졌다. 결국 ELPA 브랜치 문제와 Bazaar 개발 중단, 변환 스크립트 준비 끝에 이맥스는 Git으로 옮겨갔다.

open-source

현대차·기아, 오픈소스 특허 방어망 넓혀 소프트웨어 중심 차량 전환 준비

현대차·기아가 오픈소스 소프트웨어 특허 분쟁을 줄이기 위해 글로벌 특허 네트워크 OIN 2.0에 가입했다. 소프트웨어 중심 차량, 클라우드, 커넥티드 서비스처럼 오픈소스 의존도가 큰 영역에서 법적 리스크를 미리 관리하려는 움직임이다.