未定义的函数引用(链接器错误)
Undefined reference to function (linker error)
您好,我阅读了有关未定义的其他问题和答案reference.But,但我仍然无法找出我的代码有什么问题。我有一个简单的链表代码,其中我将整数添加到尾部,然后显示它们。这是我的代码
"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::imple()'
lmain.cpp:(.text+0x2a): 对 imple::addToTail(int)'
lmain.cpp:(.text+0x45): undefined reference to
imple::display()' 的未定义引用
collect2: ld 返回了 1 个退出状态
您的回答和建议将很有帮助
尝试使用
g++ main.cpp implementaion.cpp
这可能会有所帮助
简而言之,你可以使用
g++ main.cpp implementation.cpp -o out
您需要在构建过程中包含 implementation.cpp
并使 link 用户可以访问函数定义。即用
编译
g++ -c implementation.cpp -o implementation.o
和
g++ -c main.cpp -o main.o
和link他们连同
g++ main.o implementation.o -o out
您可以创建一个 运行 文件:
g++ -o main implementation.cpp main.cpp
和 运行 它与 :
./main
您好,我阅读了有关未定义的其他问题和答案reference.But,但我仍然无法找出我的代码有什么问题。我有一个简单的链表代码,其中我将整数添加到尾部,然后显示它们。这是我的代码 "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::imple()'
lmain.cpp:(.text+0x2a): 对 imple::addToTail(int)'
lmain.cpp:(.text+0x45): undefined reference to
imple::display()' 的未定义引用
collect2: ld 返回了 1 个退出状态
您的回答和建议将很有帮助
尝试使用
g++ main.cpp implementaion.cpp
这可能会有所帮助
简而言之,你可以使用
g++ main.cpp implementation.cpp -o out
您需要在构建过程中包含 implementation.cpp
并使 link 用户可以访问函数定义。即用
g++ -c implementation.cpp -o implementation.o
和
g++ -c main.cpp -o main.o
和link他们连同
g++ main.o implementation.o -o out
您可以创建一个 运行 文件:
g++ -o main implementation.cpp main.cpp
和 运行 它与 :
./main