我一直在玩弄,用 C 语言编写了一个小型 IRC 框架,我现在要用一些核心功能来扩展它——但除此之外,我希望它可以通过插件进行扩展!
直到现在,每当我写一些与 IRC 相关的东西(我写了很多,现在用大约 6 种不同的语言......我着火了!)并且实际上继续实现插件架构时,它是在一种解释语言中有这样做的设施(阅读:滥用),比如eval
在 Ruby 中干扰整个脚本文件(糟糕!)。
现在我想在 C 中滥用一些东西!
基本上我可以做三件事
- 在我的程序中定义一个简单的脚本语言
- 使用现有的,嵌入解释器
- 使用 libdl 在运行时加载 *.so 模块
我喜欢第三个,如果可能的话,我宁愿避免其他两个选项。也许我是某种受虐狂,但我认为这对学习目的既有趣又有用。
从逻辑上思考,明显的“痛苦链”将是(从最低到最高)2 -> 1 -> 3,原因很简单,libdl 正在处理可以(并且将会)更频繁地在我面前爆炸的原始代码.
所以这个问题问你,stackoverflow 的同胞们,你认为 libdl 能胜任这项任务,甚至是一个现实的想法吗?