https://github.com/FrankStain/tex-conv
Это пример такого проекта. Многозадачный конвертер текстур.
На верхнем уровне лежит C# приложение с UI на WinForms, вся работа с пользователем выполнена именно тут.
К верхнему уровню подключается C++/CLI ядро, представляющее собой библиотеку классов. Это ядро связывает верхний уровень с нижним, который представлен потенциально несчетным набором плагинов.
Библиотека классов в C# используется как будто это рядовой модуль.
Конкретно для твоего случая я порекомендую поступить так.
- Нижний уровень - проект статической библиотеки, в которой будет весь твой C++ код.
- Средний уровень - C++/CLI библиотека классов, в которую и линкуется нижний уровень, свяжет нижний уровень с верхним через свои классы.
- Высокий уровень C# приложение, использующее классы среднего уровня.