我正在嘗試在Ubuntu 11.10上編譯一個使用Boost庫的程序。我安裝了Ubuntu Repository中的1.46-dev Boost庫,但編譯程序時出錯。undefined reference to boost::system::system_category()我做錯了什么?
3 回答

眼眸繁星
TA貢獻1873條經(jīng)驗 獲得超9個贊
與定義缺失符號(-lboost_system)的庫鏈接是顯而易見的解決方案,但在Boost.System的特定情況下,原始設計中的錯誤使得它的使用boost::system::generic_category()和boost::system::system_category()不必要。使用該標志進行編譯-DBOOST_SYSTEM_NO_DEPRECATED會禁用該代碼,并且可以在不需要的情況下編譯許多程序-lboost_system(如果您明確使用某些庫的功能,那么當然仍需要該鏈接)。
從Boost 1.66和此提交開始,此行為現(xiàn)在是默認行為,因此希望越來越少的用戶需要此答案。
正如@AndrewMarshall所注意到的,另一種方法是定義BOOST_ERROR_CODE_HEADER_ONLY哪個版本啟用了代碼的標題版本。但是,Boost 不鼓勵這樣做,因為它可能會破壞某些功能。
- 3 回答
- 0 關注
- 4232 瀏覽
添加回答
舉報
0/150
提交
取消