添加插件功能的建议?

kay*_*oll 15 plugins extensibility

是否有将可扩展性功能编程到代码中的一般过程?

我想知道将扩展类型功能添加到您正在编写的系统的一般过程是什么,以便可以通过某种插件API扩展功能,而不必修改系统的核心代码.

这些事情往往取决于系统编写的语言,还是有一种通用的方法来允许这样做?

Der*_*ark 3

这通常是您必须公开的内容,所以是的,它将取决于您的系统编写的语言(尽管通常也可以为其他语言编写包装器)。

\n\n

例如,如果您有一个用 C 语言编写的 Windows 程序,则插件将以 DLL 的形式为您的程序编写。在运行时,您将手动加载这些 DLL,并向它们公开一些接口。例如,DLL 可能公开一个gimme_the_interface()可以接受填充函数指针的结构的函数。这些函数指针将允许 DLL 进行调用、注册回调等。

\n\n

如果你使用 C++,你会使用 DLL 系统,除非你可能会传递一个对象指针而不是一个结构,并且该对象将实现一个提供功能的接口(完成与结构相同的事情,但不那么难看)。对于 Java,您可以按需加载类文件而不是 DLL,但基本思想是相同的。

\n\n

在所有情况下,您都需要在代码和插件之间定义一个标准接口,以便您可以初始化插件,以便插件可以与您交互。

\n\n

PS 如果您想查看 C++ 插件系统的好示例,请查看foobar2000 SDK。我已经有一段时间没有使用它了,但它曾经做得非常好。我想现在仍然如此。

\n