我有一个C ++ Windows应用程序,可以通过编写C ++插件来扩展,使用应用程序公开的API。还有一个插件可以将C ++ API转换为Python(例如,插件可以用Python编写)。
除了C ++和Python之外,我想允许用户在C#中编写插件。由于我不熟悉.NET世界,我不确定如何实现C#插件系统。
您建议在这种插件系统中使用什么(主机是C ++,C#中的插件)?为了实现这一目标,我需要学习什么?
答案 0 :(得分:3)
使用COM对象和接口公开您的API,您将打开您的应用程序到许多开发环境,包括C#。
答案 1 :(得分:3)
答案 2 :(得分:2)
实际上还有COM的建议。如果您真的想要添加第一类.NET插件支持,则可以托管您自己的CLR进程。这里有一篇非常有趣的文章。
答案 3 :(得分:1)
我过去曾以各种方式做过这件事。我发现C ++ / CLI是构建.Net和非托管C ++之间桥梁的最佳选择(但是,如其他海报所述,另一种选择是COM)。
过去我这样做的方法包括:
最后,您将有一个C#插件的程序集进行编译。现在您需要在运行时加载插件程序集。为此,您必须托管CLR。
托管CLR并不困难,虽然我只做了一次而且那是几年前 - 也许时间已经改变了。如果你不熟悉托管CLR,那么尽可能将你的应用程序代码粘贴到DLL中,然后编写一个小的C ++ / CLI应用程序来启动你的非托管UI。现在CLR由小型C ++ / CLI应用程序托管。