基礎知識 | 每日一練(127)

  • 2019 年 10 月 7 日
  • 筆記

讀者:我不斷得到庫函數未定義錯誤, 但是我已經 #inlude 了所有用到

的頭文件了,請問該怎麼解決?

小林:通常, 頭文件只包含外部說明。某些情況下, 特別是如果是非標準函數, 當你連接程序時, 需要指定正確的函數庫以得到函數的定義。#include 頭文件並不能給出定義。

讀者:雖然我在連接時明確地指定了正確的函數庫,為什麼 我還是得到庫函數未定義錯誤?

小林:許多連接器只對對象文件和函數庫進行一次掃描, 同時從函數庫中提取適合當前未定義函數的模塊。所以函數庫和對象文件 (以及對象文件之間) 的連接順序很重要; 通常, 你希望最後搜索函數庫。例如, 在 Unix 系統中, 把 -l 參數放在命令行的後部。