静态库实现vs包括源代码实现

时间:2014-05-17 11:06:34

标签: c compilation static-libraries

将程序编译为静态库有什么一般区别 与包含源代码到程序中?

即可。一个程序,其函数被编译为静态库(.lib)并链接到程序与A程序,其中的函数包含在主程序中作为源文件。

静态库更适合在发布闭源程序时发布? 编译速度更快?等。

4 个答案:

答案 0 :(得分:3)

我主张包含源代码,因为:

  1. 静态库比源代码更依赖于架构。您需要一次又一次地编译它。
  2. 可选地,源代码允许比使用预编译库链接更多优化。
  3. 在检查程序时,最好有可能看到源代码而不仅仅是原型。

答案 1 :(得分:1)

作为已编译的可执行文件,它们之间基本没有区别。我认为关键是你的软件工程目的。

如果您是组件开发人员,静态链接库可以保密您宝贵的源代码。如果您将源代码作为业务,则可能非常重要。

同时,如果您希望人们在任何平台上使用您的源代码,您可能希望将您的模块作为源代码发布,就像开源开发人员所做的那样。

答案 2 :(得分:-1)

使用库时编译速度会更快,因为您不需要编译代码,只需链接它。但最重要的收获转向软件架构:使库为您提供编写代码的方法,以便在将来的应用程序中重用。来自Wikipedia

  

库的值是行为的重用。当程序调用库时,它会获得在该库中实现的行为,而不必实现该行为本身。库鼓励以模块化方式共享代码,并简化代码的分发。

答案 3 :(得分:-1)

通常最好隔离一部分软件并将其转换为.lib.dll文件(或适合您的操作系统和可执行文件格式){No Repetition}。

此外,将源代码直接包含在源文件中会使应用程序变得笨重,只更新一小部分代码需要重建可执行文件,如果您希望用户下载和使用该应用程序,您的用户将会不满意再次下载整个应用程序文件。

第三,正如user3647458所说,如果你是在赚钱销售组件代码,那么.lib文件就是你希望你的库(可能是免费的)。