未定义的函数引用(链接器错误)

时间:2015-10-20 07:34:27

标签: c++ linker

您好我读了关于未定义引用的其他问题和答案。但是我仍然无法找出我的代码有什么问题。我有一个简单的链表代码,其中我将整数添加到尾部,之后我显示它们。这是我的代码 “head.h”

#ifndef __HEAD_H_INCLUDE
#define __HEAD_H_INCLUDE

class Node {
int info;
Node *next;
};

class imple {
public:
    imple();
    void addToTail(int );
    void display(void);
private:
    Node *head,*tail;
};

#endif

“implementaion.cpp”

#include<iostream>
#include "head.h"

imple::imple(){
head=tail=0;
}

void imple::addToTail(int key){
if(tail==0)
    {tail=head=new Node();
    info=key;next=0;}
else
{
    tail->next=new Node();
    info=key;next=0;
    tail=tail->next;
}
}

void imple::display(){
Node *temp;
for(temp=head;temp->next !=0;temp=temp->next)
{
    std::cout<<temp->info << "   ";
}
}

“的main.cpp”

#include<iostream>
#include "head.h"

int main(){
Node node;
imple ab;
for(int i=0;i<5;i++)
ab.addToTail(i);
ab.display();
}

每次编译我都会收到此错误

“/ tmp / cc20Z1ZH.o:在函数main': lmain.cpp:(.text+0x10): undefined reference to中执行:: imple()' lmain.cpp :(。text + 0x2a):未定义引用imple::addToTail(int)' lmain.cpp:(.text+0x45): undefined reference to implementation :: display()' collect2:ld返回1退出状态“

您的回答和建议会有所帮助

3 个答案:

答案 0 :(得分:3)

简而言之,您可以使用

g++ main.cpp implementation.cpp -o out

您需要在构建过程中包含implementation.cpp,并使链接器可以访问函数定义。也就是说,用

编译它
g++ -c implementation.cpp -o implementation.o

g++ -c main.cpp -o main.o

并将它们与

链接在一起
g++ main.o implementation.o -o out

答案 1 :(得分:0)

尝试使用

g++ main.cpp implementaion.cpp

可能这会有所帮助

答案 2 :(得分:0)

您可以使用以下命令创建运行文件:

g++ -o main implementation.cpp main.cpp

并使用:

./main