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