0
我有一个程序使用整数列表作为全局变量。我想让用户通过获取和设置列表中的插槽来创建附加功能。一个简单的用法是增加序列的第一个值。什么系统可以让用户创建插件与这个列表进行交互?允许其他人为程序提供其他功能
我有一个程序使用整数列表作为全局变量。我想让用户通过获取和设置列表中的插槽来创建附加功能。一个简单的用法是增加序列的第一个值。什么系统可以让用户创建插件与这个列表进行交互?允许其他人为程序提供其他功能
执行此操作的一种方法是运行时链接程序,如使用dll。该示例将在Python中,但其他语言的想法相同:
每个插件都是一个函数库,其函数名为update
,它将一个指向列表的指针作为参数。该函数可以以任何方式访问列表。主程序导入每个库,以某个时间间隔调用每个插件的函数(这些调用可以放入一个线程中)。对于额外的功能,也可以为每个插件设置一个初始化全局变量的函数,并且还可以生成一个线程,以允许实时更新全局变量,而不受函数调用的影响。函数可以读写全局变量。
这里是用Python写的一个例子:
main.py
:
import plugin
array = [0, 0, 0]
while True:
# do other work
array = plugin.update(array)
plugin.py
:
def update(array):
array[0] += 3
return array
不幸的是,Python代码必须通过周围的整个列表,因为我不知道如何传递指针。在C语言或其他语言中,可以使用指针来提高效率。另外请注意,编译的语言将需要一个dll来导入。
目前还不清楚你的意思是由外部代码。您可以将API作为源代码发布到其他将作为库编译的敏捷模块中,您可以提供通过C API导出的二进制库,您可以实现由另一个程序托管的此库,该程序通过命令行更改值/配置文件...每个这些都需要不同的方式来暴露这样的api。 –
我认为我真正想要的是为他人提供我的程序可以加载的dll。只要用户正确地使用API,我想我可以解决一些问题。我会在完成后更新我的帖子。 – pengowen123