繁体   English   中英

使用某些库分发程序(源文件)

[英]Distributing a program(source files) using some library

我写了一个使用Cryptopp库的程序。 我已经创建了静态库,并将其包含在我的发行版中,但是该程序还需要很多头文件。 我的问题是我需要在发行版中包含所有这些头文件吗?

对于实施例,我写其使用代码des.hmodes.hfilters.h而这又是基于在Cryptopp,长链其他的头文件。 我是否包括Cryptopp库中的所有头文件?

更一般地说,如果我编写一些使用其他库的代码(例如Cryptopp或boost),那么我需要在发行版中包含什么?

更新 :我想分发源代码,而不仅仅是二进制文件。 这样,如果我们愿意,用户可以从头开始编译我的程序。 我包括静态库,但对头文件感到困惑。 我需要全部包括在内吗?

不,您只分发二进制文件。 您不需要标题即可运行程序。

但是,如果要分发库(而不是程序),则需要提供标头。 您的标头,而不是第三方标头。

如果第三方标头仅是实现的一部分,则可以通过多种方法来排除它们。 如果不是,则还需要提供它们。 假设您不需要,并且只在内部使用它们,则可以使用前向声明:

//MyClass.h
class ExternalClass;
class MyClass
{
   ExternalClass* p;
} ;

这样,您只需要在实现文件中包括第三方标头,无论如何您都不会分发。

通常,您想做两件事之一:要么根本不分发库,要么完全按原样分发整个库。

如果您仅分发二进制可执行文件,则第一个有意义。 如果要分发源代码,则可以执行任何一种操作。 尝试在两者之间做一半,只分发代码所依赖的库的一部分,这是解决问题的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM