我收到此错误,我不确定如何修复它。请求构造函数采用字符串类型,我认为我在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
代码:
class Request
{
public:
//constructor intializes request type
Request(char *u, int rqtID, int rqtrID);
char *url;
int requestID;
int requesterID;
};
request.cc文件,其中定义了构造函数
#include "request.h"
Request :: Request(char *urll, int requestIDD, int requesterIDD )
{
url = *urll
requestID = requestIDD;
requesterID = requesterIDD;
}
答案 0 :(得分:2)
让我们先尝试理解错误。
ld:致命:符号引用错误。没有输出写入nachos
这意味着它是一个链接问题。链接器无法找到某些符号的定义。
文件中未定义的第一个引用符号 Request :: Request(char *,int,int)threadtest.o
此处的重要信息是 - Request::Request(char *, int, int)
和threadtest.o
。因此,您有一个源文件名threadtest.cpp
,您要在其中实例化Request
对象。理解在Request.h
中包含标头(可能是threadtest.cpp
)有助于编译器找到声明。链接器尝试从所有目标文件中查找符号的定义,并形成可执行文件。
因此,您可能没有编译Request.cpp
或忘记链接Request.o
。