账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    c++初学者 ld报错问题?
    43
    0

    我用c++写了一个简单的领接表小程序,编译的时候报错 代码如下

    #include <iostream>
    #include <list>
    
    using namespace std;
    
    class Network;
    class Node{
    private:
        int number; // 节点序号
        int infected_step; // 节点受感染时间
        bool is_infected; // 节点是否被感染
        friend class Network;
    public:
        Node(int val) {number = val; infected_step = -1; is_infected = false;};
        ~Node();
    };
    class Network{
    private:
        int network_size;
        list<Node>* graph;
    public:
        Network(const int val);
        ~Network();
        void print();
        void addEdge(int number1, int number2);
        void deleteEdge(int number1, int number2);
    };
    Network::Network(const int val){
        network_size = val;
        graph = new list<Node>[val + 1];
    }
    Network::~Network(){
        delete[] graph;
    }
    
    void Network::addEdge(int number1, int number2){
        Node node1(number1), node2(number2);
        graph[number1].push_back(node2);
        graph[number2].push_back(node1);
    }
    

    报错如下:

    Undefined symbols for architecture x86_64:

    "Node::~Node()", referenced from:

      Network::addEdge(int, int) in test-07ef30.o
      std::__1::__list_imp<Node, std::__1::allocator<Node> >::clear() in test-07ef30.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在C++中,使用ld命令编译程序时可能会遇到一些错误。这些错误可能由于多种原因导致,包括代码错误、编译器配置错误、链接器配置错误等。以下是一些可能的提示,以及如何解决它们。

      1. 代码错误:这可能是由于拼写错误、语法错误、逻辑错误等原因导致的。解决这个问题的方法是仔细检查你的代码,确保每个语句都是正确的。你也可以使用IDE的语法高亮功能来帮助你检查错误。

      2. 编译器配置错误:这可能是由于编译器的设置问题导致的。例如,你可能需要设置编译器的优化级别、使用C++11特性等。解决这个问题的方法是检查你的编译器配置,确保它们是正确的。

      3. 链接器配置错误:这可能是由于链接器的设置问题导致的。例如,你可能需要设置链接器的默认库、使用动态链接库等。解决这个问题的方法是检查你的链接器配置,确保它们是正确的。

      4. 交叉编译错误:这可能是由于不同平台的交叉编译环境配置不正确导致的。解决这个问题的方法是检查你的交叉编译环境配置,确保它们是正确的。

      5. 环境变量设置错误:这可能是由于环境变量设置不正确导致的。解决这个问题的方法是检查你的环境变量设置,确保它们是正确的。

      以上只是一些可能的提示,解决这个问题的具体方法可能需要根据你的具体情况来确定。如果你仍然无法解决问题,建议你寻求专业人士的帮助。

    • n1爱wo 普通会员 2楼

      在C++中,使用ld命令编译程序时可能会遇到一些错误。这些错误可能由于多种原因导致,包括代码错误、编译器配置错误、链接器配置错误等。以下是一些可能的提示,以及如何解决它们。

      1. 代码错误:这可能是由于拼写错误、语法错误、逻辑错误等原因导致的。解决这个问题的方法是仔细检查你的代码,确保每个语句都是正确的。你也可以使用IDE的语法高亮功能来帮助你检查错误。

      2. 编译器配置错误:这可能是由于编译器的设置问题导致的。例如,你可能需要设置编译器的优化级别、使用C++11特性等。解决这个问题的方法是检查你的编译器配置,确保它们是正确的。

      3. 链接器配置错误:这可能是由于链接器的设置问题导致的。例如,你可能需要设置链接器的默认库、使用动态链接库等。解决这个问题的方法是检查你的链接器配置,确保它们是正确的。

      4. 交叉编译错误:这可能是由于不同平台的交叉编译环境配置不正确导致的。解决这个问题的方法是检查你的交叉编译环境配置,确保它们是正确的。

      5. 环境变量设置错误:这可能是由于环境变量设置不正确导致的。解决这个问题的方法是检查你的环境变量设置,确保它们是正确的。

      以上只是一些可能的提示,解决这个问题的具体方法可能需要根据你的具体情况来确定。如果你仍然无法解决问题,建议你寻求专业人士的帮助。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部