2016-09-30 82 views
0

每當我編譯我的代碼,G ++返回該錯誤消息(這只是一個segement剩下的更多的是相同的。):未定義refernece編譯使用g ++一個文件時

text.cpp:(.text+0x2b82): undefined reference to `parser(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)' 
/tmp/ccSFOyBc.o:text.cpp:(.text+0x2c3c): more undefined references to `parser(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)' follow 
/tmp/ccSFOyBc.o: In function `main': 
text.cpp:(.text+0x2f02): undefined reference to `contains(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)' 
text.cpp:(.text+0x30d2): undefined reference to `contains(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)' 

分析器,幷包含有我創建的兩個函數都存在於程序中。我聽說這個問題發生時,你不鏈接庫或忘記將多個文件鏈接在一起,但我只使用一個文件(text.cpp),並有一個庫(-lncurses),這些錯誤發生在我定義的函數該程序。我編了g++ text.cpp -lncurses。我使用最新的g ++使用Fedora Linux 24。

段: 功能中的問題:

void fight(vector<string> *i); 
bool contains(vector<string> *v, string s); 
bool parser(int a, string s); 
void printinventory(vector<string> *i); 

包含:

bool contains(vector<string> v, string s) 
{ 
    for(unsigned int i=0; i < v.size(); i++) 
    { 
     if(v.at(i)==s) 
     { 
      return true; 
      break; 
     } 
    } 
    return false; 
} 

函數調用(這兩種解析器和包含在在此位置誤差輸出的前兩行中引用):

if(parser(6, stringinput) && contains(inventory, "Planck Plank") && currx == 0 && curry == 1 && currz == 2 && !planklaids) { 

任何想法這是什麼意思?

+0

沒有看到您的代碼將很難幫助。 –

+0

我添加了一些代碼。我嘗試了不同版本的g ++,但沒有改變。 – Coupon22

+0

找到了。包含的內容必須是: bool contains(向量 * v,字符串s) – Coupon22

回答

0

我引用bool contains(vector<string> *v, string s);在頂部,但我的函數bool contains(vector<string> v, string s)並不需要一個指針變量。當我在底部使我的函數具有頂部指示的參數時,代碼被修復。