我有一個與Boost(版本1.58)奇怪的鏈接問題。我在Ubuntu 15.10上使用g ++ 4.8編譯。Boost鏈接錯誤 - 單個未定義的參考
我得到以下錯誤:
undefined reference to 'boost::program_options::options_description::options_description(std::string const&, unsigned int, unsigned int)' collect2: error: ld returned 1 exit status
什麼奇怪的是,從lboost_program_options所有其他符號如發現; options_description是唯一未定義的參考。如果我註釋掉options_description的用法,但是繼續使用positions_options_description(我也在使用它),那麼整個程序將完美地編譯和鏈接。我正在鏈接-lboost_program_options,如果我按照預期刪除它,那麼有8個缺失boost :: options_description符號。
很長一段時間鏈接工作正常。沒有任何構建系統的變化,我知道它突然崩潰。唯一的系統級別更改是升級到Ubuntu 15.10,我認爲這不會影響任何內容。
任何想法或建議表示讚賞。
更新:經過大量的擺弄之後,我再次得到這個工作,雖然我不確定它是什麼。我仍然對任何可能導致這種行爲的答案感興趣。
升級你的操作系統幾乎肯定會升級很多軟件包。很可能您使用apt-get安裝了boost(-dev),並且它現在處於更新的版本。 – Kenney
這是可能的,但我不明白爲什麼會導致此錯誤。我檢查了一下,以確保在當前版本的boost中API和包裝是相同的。 –