2013-03-30 32 views
0

使用.a文件時,是否必須使用.cpp文件或僅分發.h文件?帶有標頭的.o或.a文件的分發

例如,我寫了大量的類並將所有代碼編譯到.o文件中。然後我將.o文件歸檔到.a文件中。

當我嘗試在其他項目中將.a文件與.h文件一起使用時,它需要我有時使用.cpp文件。

對於某些頭文件,它不會問我.cpp文件,但是對於套接字等東西,它會給出未定義的引用impl_shutdown,除非包含.cpp文件。

即使我鏈接了所有必需的庫,也會發生這種情況。

爲什麼?什麼是.o/.a文件,爲什麼需要使用它分發.cpp文件?像Zlib和LibPng這樣的庫似乎不需要分發除.h和.a文件之外的任何內容。

回答

2

當使用.a文件時,是否必須使用.cpp文件或僅分發.h文件?

只有標題。

什麼的.o/.a文件真的

.o文件是object code,.A是檔案(目標文件的集合)。它們是編譯和彙編的機器代碼,需要鏈接才能創建可執行文件。

爲什麼我需要使用它分發.cpp文件?

你不知道。

+0

只是一個旁註,但可能想補充說.a通常是靜態的庫(而不是共享),因爲他提到了與zlib和libpng的鏈接。 – TC1

+0

@ TC1這是暗示「他們的檔案」和「[他們]需要鏈接」:) – 2013-03-30 21:51:52

1

只是圖書館和標題將罰款。

確保如果您的對象位於多個庫上,則不存在循環依賴關係。如果存在,您需要多次指定這些庫,以便鏈接程序可以提取它們。

+0

:o也許這就是爲什麼我得到鏈接器錯誤。循環依賴關係:l嗯.. – Brandon

+0

@CantChooseUsernames循環依賴會導致各種各樣的問題... –

相關問題