簡體   English   中英

對函數的未定義引用(鏈接器錯誤)

[英]Undefined reference to function (linker error)

嗨,我閱讀了有關未定義參考的其他問題和答案。但我仍然無法找出我的代碼有什么問題。 我有一個簡單的鏈表代碼,其中我將整數添加到尾部,然后顯示它們。 這是我的代碼“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

“實現.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 << "   ";
}
}

“主.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 toimple::imple()' lmain.cpp:(.text+0x2a): undefined reference imple::addToTail(int)' lmain.cpp:(.text+0x45): undefined reference to ::display()' collect2 的imple::addToTail(int)' lmain.cpp:(.text+0x45): undefined reference to :ld 返回了1 個退出狀態"

您的回答和建議會有所幫助

簡而言之,您可以使用

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

嘗試使用

g++ main.cpp implementaion.cpp

可能這會有所幫助

您可以使用以下命令創建運行文件:

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

並運行它:

./main

暫無
暫無

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

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