У меня есть приложение C++ для Windows, которое можно расширить, написав плагины C++ с использованием API, предоставляемого приложением. Также существует один плагин, который переводит C++ API в Python (например, плагины могут быть написаны на Python).
Я хочу разрешить пользователям писать плагины на C# в дополнение к C++ и Python. Поскольку я не очень знаком с миром .NET, я не уверен, как реализовать систему плагинов C#.
Что бы вы порекомендовали использовать для такого типа системы плагинов (хост - C++, плагины - C#)? Что мне нужно узнать, чтобы этого добиться?





Раскройте свой API с помощью COM-объектов и интерфейсов, и вы откроете свое приложение для многих сред разработки, включая C#.
Есть несколько предыдущих сообщений, которые могут вам помочь:
Собственно, как и предложения COM. Если вы действительно хотите добавить поддержку подключаемых модулей .NET 1-го класса, можно разместить свой собственный процесс CLR. Об этом есть очень интересная статья.
Раньше я делал это разными способами. Я обнаружил, что C++ / CLI был лучшим вариантом для построения моста между .Net и неуправляемым C++ (хотя, как отмечали другие авторы, COM в другом варианте).
Способы, которыми я делал это в прошлом, включают:
В конце концов, у вас будет сборка для подключаемых модулей C# для компиляции. Теперь вам нужно загрузить сборки плагина во время выполнения. Для этого вы должны разместить CLR.
Хостинг CLR несложен, хотя я сделал это только один раз, и это было несколько лет назад - возможно, времена изменились. Если вам неудобно размещать CLR, вставьте как можно больше кода вашего приложения в библиотеки DLL, а затем напишите небольшое приложение C++ / CLI, которое вызывает ваш неуправляемый пользовательский интерфейс. Теперь среда CLR размещается в небольшом приложении C++ / CLI.