C++是否有什么插件功能的库?

2020-02-23 21:13:16 +08:00
 root1iu

各位前辈好,目前想做一个具有插件功能的软件(类似 vim 那样的插件功能),是否有什么框架或者库可以使用?

如果没有现成的库可以用,我的想法是通过动态链接文件来实现:即软件主体读取配置文件,获取配置文件中的插件信息,然后在某个目录下搜寻对应的动态链接文件,利用动态链接文件加载函数加载动态链接文件,然后调用动态链接文件中的接口来启动插件。不知道这个想法是否可行?

3555 次点击
所在节点    C++
25 条回复
root1iu
2020-02-24 21:26:48 +08:00
@zhuangzhuang1988 明白了,谢谢前辈
root1iu
2020-02-24 21:28:19 +08:00
@augustheart 嗯,想先试试用 Python 来做,看看效果,谢谢啦
FrankHB
2020-02-25 14:42:54 +08:00
@zhuangzhuang1988 一句“很好解决”“学下”,是不是要人顺手就糊一个 IDL ?
zhuangzhuang1988
2020-02-25 15:15:51 +08:00
@FrankHB 那还是嵌脚本算了.
FrankHB
2020-02-27 13:47:54 +08:00
@zhuangzhuang1988 讲道理,这才是正常思路嘛。
技术上讲,要比较彻底地(让最终用户不被坑地)解决这个问题,提供 IDL 都不够用。不说这里实现的 bug 可能比编译器出问题更没法收场,就是都正确实现了,插件不守规矩出的问题很可能就无解,加上容忍不可信来源就更加没法收场了。
敢这样做方案的,要么极端地限制二进制接口(到插件不太有意义的程度),否则起码得自己发行包管理器和对应的版本库保证二进制版本可追溯。对开发用途来讲,还得集成 CI + devel pkg。
说到底这就是操作系统发行版的干活。以二进制插件兼容为荣的浏览器都普遍放弃了这个做法。
(……而想以开发者也不被坑地彻底解决这个问题,起码是要自己实现链接器限制某些特性滥用的。)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/646906

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX