簡體   English   中英

使用g ++編譯單個文件時未定義引用

[英]Undefined refernece when compiling a single file with g++

每當我編譯我的代碼時,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)並擁有一個庫(-Incurses)時,我聽說會發生此問題,並且在我定義的函數中發生了這些錯誤該程序。

我用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) {

知道這意味着什么嗎?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM