Программа C # WinForms с возможностью создания плагинов для C ++ - PullRequest
0 голосов
/ 15 сентября 2010

Я создаю приложение winforms C #, предназначенное для .NET 3.5 framework.Я хочу, чтобы эта программа могла иметь плагины.Надеемся, что плагины могут быть созданы в неуправляемом C ++.Если нет прямого способа создать плагин в C ++, я хотел бы знать простейшую структуру плагинов, которая позволила бы мне сделать простую оболочку C # для кода C ++ и превратить ее в плагин.

Я исследовал некоторые возможные структуры плагинов, и мне было интересно, что чувствует ваш парень по этому поводу.

  • Пространство имен System.Addin
  • MEF
  • Mono.Addins

Дополнительная информация: Я хочу, чтобы это было универсальным.Например, я хотел бы, чтобы программа на c # могла обрабатывать плагины, написанные на C #, sdk, написанный на C ++ с привязками C # swig, возможно, некоторый прямой неуправляемый код C ++ и, возможно, немного Python.Опять же, вероятно, нужна какая-то обертка.

Также я хотел бы отметить, что я никогда раньше не имел дело с плагинами, так что для меня это все ново.

Ответы [ 2 ]

1 голос
/ 15 сентября 2010

Ну, вы можете просто определить методы, которые вы хотите реализовать в плагине, затем загрузить плагин dll, используя LoadLibrary, и получить указатели на необходимые методы, используя GetProcAddress.Просто напишите небольшой класс-обертку, который получит имя dll в c'tor и предоставит необходимый интерфейс в .Net, но перенаправит все вызовы в dll.

Вам не нужен каркас для этой обертки.*

0 голосов
/ 15 сентября 2010

Я предлагаю вам создать интерфейс для надстроек (или использовать как System.Addins).Затем создайте пример надстройки в Managed C ++, которая просто загружает dll с помощью LoadLibrary и подключает функции с тем же именем к их управляемым эквивалентам.Затем вы можете сами управлять маршалингом.

Затем вы можете использовать простой c # декоратор , чтобы загрузить любую надстройку DLL специально.

...