【问题标题】:Error: Undefined first referenced symbol in file错误:文件中未定义的第一个引用符号
【发布时间】:2014-11-21 19:49:10
【问题描述】:

我收到此错误,但不知道如何解决。请求构造函数采用字符串类型,我认为我在 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;

    }

【问题讨论】:

  • 你在哪里定义了构造函数定义?您是否正在编译和链接该源文件?
  • 你的Request构造函数没有函数体
  • 确保 request.cc 包含在构建中。

标签: c++ pointers nachos


【解决方案1】:

让我们先尝试理解错误。

ld:致命:符号引用错误。没有输出写入 nachos

这意味着这是一个链接问题。链接器无法找到某些符号的定义。

文件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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多