2016-03-03 109 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來導入。