实现前端而不是链接库的优点

时间:2010-09-03 19:49:35

标签: c++ linker frontend

我想写一个播放MP3的C ++程序。在可用的MP3解码库中,我选择了mpg123。

我注意到,除了能够链接libmpg123并在我的代码中进行必要的函数调用之外,该库还包含一个后端/前端接口,使我能够与它的可执行文件进行通信,因此不需要在我的程序中包含它的代码。

编写前端而不是简单地链接到库有什么好处?

3 个答案:

答案 0 :(得分:6)

大多数优势来自可执行文件和库可执行文件之间的进程分离:

  • 增加安全性&安全性:如果库崩溃,这不会导致应用程序崩溃。
  • 隐式多处理:由于两者都在不同的进程上运行,因此几乎是免费的。
  • 网络化的倾向:如果进程之间的通信是使用管道或stdin / stdout完成的,您可以轻松地将它们转发到套接字并在单独的计算机上运行可执行文件。
  • 语言中立:您可以使用您想要的任何编程语言。

当然,使用外部通信渠道会降低性能。但是,这种脱钩的好处可能会令人印象深刻。

答案 1 :(得分:1)

  1. 您无需重新编译程序即可升级后端。
  2. 如果后端崩溃,可能不会带你的程序。

答案 2 :(得分:0)

据我所知,可执行文件的唯一用途是用于测试目的。您可以将此第三方库作为可执行文件运行,以了解所提供的各种API的行为,以便您可以更好地了解其在代码中的使用情况,并了解它们如何使用各种输入。之后,您将它链接到您的流程,以便库调用在您的流程的地址空间内。如果你只是同时运行2个可执行文件,那么你也会有IPC开销。