Я получаю эту ошибку, и я не уверен, как ее исправить. Конструктор запроса принимает строковый тип, я не думаю, что я правильно реализовал в моем файле 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;
}
Попробуем сначала понять ошибку.
ld: fatal: Ошибка ссылки на символ. Нет вывода, записанного в 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
,