对于语言通过用户给定的模块/库/代码......来执行插件或扩展运行时代码的常见方法是什么?我在想C/C++,但其他语言如何做到这一点也可能适用。插件/运行时扩展体系结构
0
A
回答
0
一种方法是将模块编译为动态对象,主程序以dlopen()
打开。然后它使用dlsym()
来查找模块必须定义的特定初始化函数,并调用它。例如,您可能会说存储在foo.so
中的模块必须定义一个名为module_foo_init()
的函数。
模块的init例程通常会调用main程序提供的函数来注册某些事件或钩子的处理程序。
0
0
我在工作中的大多数语言这样做的一般方法:
- 你有两个二进制文件,你的主要程序和“插件接口库”。
- 插件接口库基本上只包含一个接口或抽象基类,或类似插件可以编码和扩展的东西。
- 主程序使用反射或其他标准化接口来提取实现所有插件库的接口的类的实例。对所有插件重复此步骤
- 然后在需要与插件进行交互时针对界面进行调用。
设计最后的部分是大部分工作来的地方。什么是调用或钩子,或什么应该被允许?如何注册,它们只是函数,可能是空的,还是会有某种“挂钩注册”?如果后者,这将如何工作(我通常将一个对象传入构造函数中,可以用来注册钩子)?
相关问题
- 1. 扩展/插件通信的体系结构
- 2. Ruby插件体系结构
- 3. 匹配系统和扩展它的体系结构
- 4. .net插件体系结构问题
- 5. 插件体系结构教程
- 6. .NET中的插件式体系结构
- 7. 设计一个插件体系结构
- 8. .Net和插件体系结构
- 9. Angular + ASP.Net核心:插件体系结构
- 10. Firefox扩展文件结构
- 11. 通过运行时间使用的结构扩展
- 12. 从扩展运行方法扩展运行扩展运行
- 13. 帮,带“可扩展的JavaScript应用程序体系结构”
- 14. 在集群体系结构中扩展RAM吗?
- 15. 可扩展的web项目体系结构
- 16. Erlang运行时错误的体系结构?
- 17. 如何在android运行时得到芯片的体系结构
- 18. 体系结构x86_64运行Haskell代码时,Haskell OSX iconv
- 19. 长时间运行的webservice体系结构
- 20. 基于组件的体系结构:在运行时替换组件
- 21. 如何在递归结构中存储任意值或如何构建可扩展的软件体系结构?
- 22. nopcommerce的可插拔体系结构
- 23. 实时系统的体系结构?
- 24. 在Python中构建最小插件体系结构
- 25. VS 2010的扩展 - 缺少结构装饰品及AllMargins插件
- 26. 软件体系结构与企业体系结构,每种体系何时使用?
- 27. Visual Studio 2015文件结构扩展
- 28. 用于长时间运行的Windows服务的实体框架体系结构
- 29. PHP扩展返回结构
- 30. 扩展结构数组