簡體   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