我有一個C++ Windows應用程序,可以通過使用應用程序公開的API編寫C++插件來進行擴展。還有一個將C++ API轉換爲Python的插件(例如,插件可以用Python編寫)。使用C#插件擴展C++應用程序
我想讓用戶在C++和Python中編寫插件。由於我對.NET世界不是很熟悉,我不確定如何實現C#插件系統。
你會推薦使用什麼樣的插件系統(主機是C++,C#插件)?爲了實現這個目標我需要學習什麼?
我有一個C++ Windows應用程序,可以通過使用應用程序公開的API編寫C++插件來進行擴展。還有一個將C++ API轉換爲Python的插件(例如,插件可以用Python編寫)。使用C#插件擴展C++應用程序
我想讓用戶在C++和Python中編寫插件。由於我對.NET世界不是很熟悉,我不確定如何實現C#插件系統。
你會推薦使用什麼樣的插件系統(主機是C++,C#插件)?爲了實現這個目標我需要學習什麼?
有一對夫婦之前的帖子可能會幫助你的:
使用COM對象和接口公開您的API,您將開放您的應用程序到許多開發環境,包括C#。
其實還有COM建議。如果你真的想添加第一類的.NET插件支持,那麼可以託管你自己的CLR流程。這裏有一篇非常有趣的文章。
我已經在過去不同的方式做到了這一點。我發現C++/CLI是構建.Net和非託管C++之間橋樑的最佳選擇(儘管如其他海報所述,另一種選擇是COM)。
我已經在過去這樣做的方式包括:
最後,您將擁有一個用於編譯C#插件的程序集。現在您需要在運行時加載插件程序集。爲此,您必須託管CLR。主持CLR並不困難,雖然我只做了一次,那是幾年前 - 也許時代已經發生了變化。如果您不熟悉託管CLR,那麼儘可能將您的應用程序代碼粘貼到DLL中,然後編寫一個小型C++/CLI應用程序來調出非託管UI。現在,CLR由小型C++/CLI應用程序託管。