問題描述
碰到以下開頭的內容,問題的解決方式
undefined reference to ...
可能的原因種類很多,以下舉例幾種我碰過且有解決的方式。
範例1
/opt/work/core/Module.h:18: undefined reference to `vtable for Module'
collect2: error: ld returned 1 exit status
解法1
去除多餘的 .o file (有可能過去存在的 .cpp,因為改版而消失)
殘留的 .o 檔未清除乾淨導致的編譯錯誤。
/opt/work/core/Module.h:18: undefined reference to `vtable for Module'
collect2: error: ld returned 1 exit status
範例2
undefined reference to `boost::system::generic_category()'
解法2
library 問題,
可以往 library 是否有被正確 include 的方向去查 (可能是 include 路徑不正確,或未 include)
請在 makefile 或編譯當中添加路徑 -lboost_system
整理
-l: library 名稱
-L:library 路徑
類似情況
undefined reference to `Beanstalk::Client::~Client()'
請在 makefile 或編譯當中添加路徑 -lbeanstalk
- 可參考官方網站:beanstalkd client