我想编写一个播放 MP3 的 C++ 程序。在可用的 MP3 解码库中,我选择了 mpg123。
我注意到,除了能够链接到 libmpg123 并在我的代码中进行必要的函数调用之外,该库还包括一个后端/前端接口,使我能够与它的可执行文件进行通信,因此不必包含它的代码在我的程序中。
编写前端而不是简单地链接库有什么优势?
大多数优点来自可执行文件和库可执行文件之间的进程分离:
当然,使用外部通信通道会降低性能。但这种脱钩的好处是相当可观的。
据我所知,可执行文件的唯一用途是用于测试目的。您可以将此第三方库作为可执行文件运行,以了解所提供的各种 API 的行为,以便您可以从代码中更好地了解其用法,并了解它们如何处理各种输入。之后,您会将其链接到您的进程,以便库调用位于进程的地址空间内。如果你只是同时运行 2 个可执行文件,你也会有 IPC 开销。