作者FATCLOUD (A Cloud)
看板EE_DSnP
標題[問題] 神秘的 stdlib.h
時間Sat Apr 11 23:45:21 2009
現在我又遇到了一個問題
我在寫 ModNum.h 和 .cpp 的時候
過程中寫一寫我就 make test 一遍
看 compiler 回報的錯誤訊息來除錯
把這兩個檔案中的錯誤都除掉了
而除到最後
我在 make test 完畢以後只剩兩個錯誤
test.cpp:58: 錯誤: 「exit」 在此作用欄位中尚未宣告
test.cpp:61: 錯誤: 「atoi」 在此作用欄位中尚未宣告
據我英明的判斷
這兩個函數是 stdlib.h 或者 cstdlib 裡面
於是我就在 test.cpp 裡面補上了一行
#include <stdlib.h>
然後 make test 一遍
卻得到了兩大頁錯誤訊息:
test.o: In function `__static_initialization_and_destruction_0':
/usr/include/c++/4.3/iostream:77: undefined reference to `std::ios_base::Init::Init()'
/usr/include/c++/4.3/iostream:77: undefined reference to `std::ios_base::Init::~Init()'
test.o: In function `print()':
/home/fatcloud/homeworks/data structure/hw3/src/test/test.cpp:28: undefined reference to `std::cout'
/home/fatcloud/homeworks/data structure/hw3/src/test/test.cpp:28: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/home/fatcloud/homeworks/data structure/hw3/src/test/test.cpp:28: undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(unsigned long)'
/home/fatcloud/homeworks/data structure/hw3/src/test/test.cpp:28: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/home/fatcloud/homeworks/data structure/hw3/src/test/test.cpp:28: undefined reference to `operator<<(std::basic_ostream<char, std::char_traits<char> >&, ModNum const&)'
/home/fatcloud/homeworks/data structure/hw3/src/test/test.cpp:28: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
...........
.........
/home/fatcloud/homeworks/data structure/hw3/src/test/../../include/calcModNum.h:28: undefined reference to `ModNum::_modulus'
test.o: In function `ModNum::operator+(ModNum const&)':
/home/fatcloud/homeworks/data structure/hw3/src/test/../../include/calcModNum.h:41: undefined reference to `ModNum::_modulus'
test.o: In function `ModNum::operator+=(ModNum const&)':
/home/fatcloud/homeworks/data structure/hw3/src/test/../../include/calcModNum.h:42: undefined reference to `ModNum::_modulus'
test.o: In function `ModNum::operator-=(ModNum const&)':
/home/fatcloud/homeworks/data structure/hw3/src/test/../../include/calcModNum.h:44: undefined reference to `ModNum::_modulus'
test.o: In function `ModNum::operator*(ModNum const&)':
/home/fatcloud/homeworks/data structure/hw3/src/test/../../include/calcModNum.h:45: undefined reference to `ModNum::_modulus'
test.o:/home/fatcloud/homeworks/data structure/hw3/src/test/../../include/calcModNum.h:46: more undefined references to `ModNum::_modulus' follow
test.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld 回傳 1
make: *** [test] Error 1
總而言之就是 undefined reference to everything
要怎麼處理呢..?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.218.75
1F:推 sa901119:那兩者應要include <cstdlib> 04/11 23:50
2F:推 ric2k1:試著 initialize ModNum::_modulus 看看? 04/11 23:52
3F:→ FATCLOUD:我也試了 cstdlib 結果還是一樣耶 我的電腦是不是怪怪的 04/11 23:54
4F:推 timrau:是不是還缺了iostream 04/12 00:24
5F:→ FATCLOUD:我在 calcModNum.cpp 裡宣告了 int ModNum::_modulus=... 04/12 00:44
6F:→ FATCLOUD:也有 iostream.. 04/12 00:45
7F:→ FATCLOUD:我原本是在 test 資料夾裡面打 make test 04/12 00:46
8F:→ FATCLOUD:改到 hw3 資料夾底下打就沒有一大堆錯誤訊息了 04/12 00:46
9F:→ FATCLOUD:但是會去 check cmd 而我的 cmd 沒寫好 04/12 00:47
10F:→ FATCLOUD:最後在 building testMC 時說 caonnot find -lcmd 就沒了 04/12 00:48