我有一个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应用程序托管。