2014-09-26 85 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