macOS 버전의 식탁보 개발을 위한 분투기 - Virtualization API C# 바인딩

오랫만에 .NET 8 기반으로 Mac 카탈리스트 앱을 MAUI로 빌드하기 위해서 다시 학습을 시작해봤는데 이번에는 꽤 의미있는 진전을 이룬 것 같습니다. (macOS용 식탁보를 C#으로 개발하고 싶다는 생각 하나로 계속 삽질 중입니다. ㅋㅋㅋㅋ)

  • MacOS “만” 지원하도록 MAUI 프로젝트를 튜닝하는 것이 이제는 확실히 가능해보이고, 실제로 그렇게 만들어진 프로젝트를 수정해보니 의도한대로 잘 구성이 되는 것 같습니다. (이렇게 해서 UI 문제는 어렵지 않게 해결될 것 같네요! XAML도 편하게 쓸 수 있겠고요.)
  • /System/Library/Virtualization.framework를 바인딩하려면 어떻게 해야 하나 그동안 헤매이기만 했는데, 알고보니 maccatalystbinding 이라는 프로젝트 템플릿이 따로 있기도 하고, 자세히 보니 결국 그동안 찾아다녔던 Objective Sharpie가 여기에 빌트인되어있었습니다.
  • Objective Sharpie라는 것이 프레임워크에서 드러내는 인터페이스를 읽어 자동으로 COM 타입 라이브러리 클라이언트를 만들어주는 것처럼 C# 바인딩을 만들어주는건가 생각했는데 아쉽게도 전혀 그렇지 않았습니다. 한땀 한땀 Objective C 코드를 바인딩하는 코드를 작성해야 하는 굉장한 수고가 필요합니다. 특히 Virtualization API를 C#에서 써보겠다고 생각하는 사람이 없을 것이니까요. ㅎㅎ

여기까지 알아내어 빌드가 잘 되는가 확인해보니 사진처럼 DLL 빌드까지 성공해주었습니다. 코드 내용을 보니 ObjectiveSharpie가 무엇을 해주는 도구인지 좀 더 이해가 잘 되었습니다.

11 Likes