首页 > 解决方案 > 为什么这个 C++ 程序在链接未定义的引用错误时出现问题?

问题描述

出于某种原因,我最近在创建具有多个文件的类时遇到了很多麻烦,因为未定义的引用错误不断出现。

这是代码:

卡片.h

class Card {
    char name;
    
    public:
    char getName();
    void setName(char);
    Card();
    Card(char);
};

卡片.cpp

#include "Card.h"

Card::Card()
{
    name = '-';
}

Card::Card(char _name)
{
    name = _name;
}

void Card::setName(char _name)
{
    name = _name;
}

char Card::getName() 
{
    return name;
}

主文件

#include <iostream>
#include "Card.h"

int main()
{
    std::cout << "Welcome to deck of cards!" << std::endl;
    
    Card card;
    card.setName('A');

    std::cout << card.getName() << std::endl;
    return 0;
}

我通过编译和构建来运行程序:

g++ -c *.cpp
g++ -o Card.o main.o

这是错误:

/usr/bin/ld: main.o: in function `main':
main.cpp:(.text+0x4b): undefined reference to `Card::Card()'
/usr/bin/ld: main.cpp:(.text+0x5c): undefined reference to `Card::setName(char)'
/usr/bin/ld: main.cpp:(.text+0x68): undefined reference to `Card::getName()'
collect2: error: ld returned 1 exit status

我知道这与链接器无法识别方法有关。但是方法是存在的,对吧?

标签: c++c++11

解决方案


而不是g++ -o Card.o main.o你想要的g++ -o Card Card.o main.o

医生说:

-o <file>

因此,该-o选项采用输出文件。这会阻止您链接Card.o


推荐阅读