2014-09-26 38 views
0

我得到這個錯誤,我不知道如何解決它。請求構造函數採用字符串類型,我不認爲我在我的request.h文件中正確實現。 錯誤:錯誤:文件中未定義的第一個引用符號

Undefined   first referenced 
symbol     in file 
Request::Request(char *, int, int) threadtest.o 
ld: fatal: Symbol referencing errors. No output written to nachos 

代碼:其中構造函數定義

#include "request.h" 

    Request :: Request(char *urll, int requestIDD, int requesterIDD) 
    { 
     url = *urll 
     requestID = requestIDD; 
     requesterID = requesterIDD; 

    } 
+0

你在哪裏定義了構造函數定義?你正在編譯和鏈接該源文件嗎? – Mahesh 2014-09-26 18:06:03

+0

您的'Request'構造函數沒有函數體 – 2014-09-26 18:06:06

+0

請確保'request.cc'包含在構建中。 – drescherjm 2014-09-26 18:14:33

回答

2

讓我們試着先了解錯誤

class Request 
{ 
public: 
    //constructor intializes request type                

    Request(char *u, int rqtID, int rqtrID); 
    char *url; 
    int requestID; 
    int requesterID; 


}; 

request.cc文件。

ld: fatal: Symbol referencing errors. No output written to nachos

這意味着它是一個鏈接問題。鏈接程序無法找到某些符號的定義。這裏

Undefined first referenced symbol in file Request::Request(char *, int, int) threadtest.o

重要信息是 - Request::Request(char *, int, int)threadtest.o。因此,您有一個源文件名threadtest.cpp,您正在實例化Request對象。理解包含頭文件(可能在threadtest.cpp中的Request.h)有助於編譯器找到聲明。鏈接程序試圖從所有目標文件中找到符號的定義並形成一個可執行文件。

所以,可能你沒有編譯Request.cpp或忘記鏈接Request.o