對於語言通過用戶給定的模塊/庫/代碼......來執行插件或擴展運行時代碼的常見方法是什麼?我在想C/C++,但其他語言如何做到這一點也可能適用。插件/運行時擴展體系結構
0
A
回答
0
一種方法是將模塊編譯爲動態對象,主程序以dlopen()
打開。然後它使用dlsym()
來查找模塊必須定義的特定初始化函數,並調用它。例如,您可能會說存儲在foo.so
中的模塊必須定義一個名爲module_foo_init()
的函數。
模塊的init例程通常會調用main程序提供的函數來註冊某些事件或鉤子的處理程序。
0
0
我在工作中的大多數語言這樣做的一般方法:
- 你有兩個二進制文件,你的主要程序和「插件接口庫」。
- 插件接口庫基本上只包含一個接口或抽象基類,或類似插件可以編碼和擴展的東西。
- 主程序使用反射或其他標準化接口來提取實現所有插件庫的接口的類的實例。對所有插件重複此步驟
- 然後在需要與插件進行交互時針對界面進行調用。
設計最後的部分是大部分工作來的地方。什麼是調用或鉤子,或什麼應該被允許?如何註冊,它們只是函數,可能是空的,還是會有某種「掛鉤註冊」?如果後者,這將如何工作(我通常將一個對象傳入構造函數中,可以用來註冊鉤子)?
相關問題
- 1. MVC4可擴展插件體系結構
- 2. Ninject XML擴展 - 插件體系結構
- 3. 擴展/插件通信的體系結構
- 4. 插件在運行時加載的體系結構
- 5. MigratorDotNet插件體系結構
- 6. jquery插件體系結構
- 7. Ruby插件體系結構
- 8. 匹配系統和擴展它的體系結構
- 9. 擴展SQL Azure表/架構的體系結構要求
- 10. 插件體系結構教程
- 11. GraniteDS插件/模塊化體系結構
- 12. .Net和插件體系結構
- 13. 設計一個插件體系結構
- 14. Spring MVC插件體系結構
- 15. Angular + ASP.Net核心:插件體系結構
- 16. ASP.NET Web.Api插件體系結構
- 17. .NET中的插件式體系結構
- 18. 插件體系結構.net maf or mef
- 19. .net插件體系結構問題
- 20. 擴展結構
- 21. Firefox擴展文件結構
- 22. 通過運行時間使用的結構擴展
- 23. 從擴展運行方法擴展運行擴展運行
- 24. 可擴展的web項目體系結構
- 25. 在集羣體系結構中擴展RAM嗎?
- 26. 幫,帶「可擴展的JavaScript應用程序體系結構」
- 27. 可擴展處理程序/插件架構的Ruby結構
- 28. Groovy - 擴展結構
- 29. 在運行時擴展類
- 30. 在Qt中獲取運行時體系結構信息