2016-03-03 89 views
0

我有一个程序使用整数列表作为全局变量。我想让用户通过获取和设置列表中的插槽来创建附加功能。一个简单的用法是增加序列的第一个值。什么系统可以让用户创建插件与这个列表进行交互?允许其他人为程序提供其他功能

+1

目前还不清楚你的意思是由外部代码。您可以将API作为源代码发布到其他将作为库编译的敏捷模块中,您可以提供通过C API导出的二进制库,您可以实现由另一个程序托管的此库,该程序通过命令行更改值/配置文件...每个这些都需要不同的方式来暴露这样的api。 –

+0

我认为我真正想要的是为他人提供我的程序可以加载的dll。只要用户正确地使用API​​,我想我可以解决一些问题。我会在完成后更新我的帖子。 – pengowen123

回答

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来导入。

相关问题