"неопределенная ссылка на" в G ++ Cpp - PullRequest
7 голосов
/ 08 августа 2011

Не могу заставить ошибки исчезнуть.Ошибки ниже.Я посмотрел на Google и до сих пор не могу понять это.Я не новичок в Cpp, но некоторое время не дурачился.

Странно то, что он работал с G ++ в Windows ...

Ошибки:

  • [ze @ fed0r!- - - ** _ _ *] $ g ++ main.cpp
  • / tmp / ccJL2ZHE.o: В функции `main ':
  • main.cpp :(. text + 0x11): неопределенная ссылка на `Help :: Help () '
  • main.cpp :(. text + 0x1d): неопределенная ссылка на` Help :: sayName ()'
  • main.cpp :(. Text + 0x2e): неопределенная ссылка на `Help :: ~ Help ()'
  • main.cpp :(. Text + 0x46): неопределенная ссылка на`Help :: ~ Help () '
  • collect2: ld вернул 1 состояние выхода

main.cpp

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

using namespace std;

int main () {

    Help h;
    h.sayName();

    // ***

    // ***

    // ***
    return 0;

}

Help.h

#ifndef HELP_H
#define HELP_H

class Help {
    public:
        Help();
        ~Help();
        void sayName();
    protected:
    private:
};

#endif // HELP_H

Help.cpp

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

using namespace std;

Help::Help() { // Constructor
}

Help::~Help() { // Destructor
}

void Help::sayName() {
    cout << "            ***************" << endl;
    cout << "   ************************************" << endl;
    cout << "              ************" << endl;
    cout << "         *********************" << endl;
}

Ответы [ 3 ]

15 голосов
/ 08 августа 2011

g ++ main.cpp Help.cpp

Вы должны сообщить компилятору все файлы, которые вы хотите скомпилировать, а не только первый.

8 голосов
/ 08 августа 2011

Вы должны добавить help.o в строку g ++:

g++ -c help.cpp -o help.o
g++ help.o main.cpp

Разделив его на две строки, вы можете сэкономить время компиляции (в случае более крупных проектов), потому что вы можете компилировать help.cpp только после его изменения. make и Makefile при правильном использовании избавят вас от головной боли:

#Makefile
all: main

main: help main.cpp
    g++ -o main help.o main.cpp

help: help.cpp
    g++ -c -o help.o help.cpp
0 голосов
/ 24 августа 2018

У меня была такая же проблема с моим дистрибутивом Linux Lubuntu, и это создавало проблему для моего конструктора, деструктора, он не распознавал их.

На самом деле, это сработает, если вы просто скомпилируете все три файла вместе. Итак, как только вы сохранили все свои файлы, просто сделайте это:

$ g++ main.cpp Help.h Help.cpp
$ ./a.out

. / A.out - исполняемый файл для Linux, извините, но я не знаю о Windows. И ваша программа будет работать без сбоев.

...