【C++】問題解決:undefined reference to ...

問題描述

碰到以下開頭的內容,問題的解決方式

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

Reference

Licensed under CC BY-NC-SA 4.0