Проблема компиляции: в функции `_start ': неопределенная ссылка на` main' collect2: error: ld вернул 1 состояние выхода - PullRequest
1 голос
/ 01 февраля 2020

Я получаю следующую ошибку:

/ usr / lib / gcc / x86_64- linux -gnu / 4.9 /../../../ x86_64- linux -gnu / crt1.o: В функции _start': /build/glibc-6V9RKT/glibc-2.19/csu/../sysdeps/x86_64/start.S:118: undefined reference to main 'collect2: ошибка: ld вернул 1 состояние выхода

используется g ++:

g ++ -Wall main. cpp plzsucheclass1. cpp -o listentest

это мой главный. cpp:

#include <iostream>

#include "plzsucheclass.hpp"

using namespace std;

int main() {
  int eingabe;
  cout << "Wollen Sie die Suchfunktion fuer PLZ/Ort oder die Entfernung zwischen zwei Gebieten berechnen? " << '\n';
  cout << '\n' << "Geben Sie 0 fuer Suchen und 1 fuer Berechnen ein ! " << '\n';
  cout << '\n' << "Geben Sie 2, um das Programm zu beenden, ein !" << '\n' << '\n';
  cin >> eingabe;
  LesenSchreiben l;
  SuchenBerechnen sb;

  switch (eingabe) {
  case 0:
    l.datei_bdlEinlesen();
    sb.plzortSuchen(l);
    break;
  case 1:
    l.datei_laebrEinlesen();
    sb.sucheEntfernung(l);
    break;
  case 2:
    exit(0);
  default:
    cerr << '\n' << "Keine korrekte Auswahl getroffen, bitte erneut versuchen !!!" << '\n';
  }

  return 0;
}

Было бы неплохо, если бы вы могли помочь мне с этим вопросом. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 01 февраля 2020

Я не могу воспроизвести вашу ошибку после создания простой main() функции и пустой plzsucheclass1.cpp:

$ cat >> main.cpp
int main() {
    return 0;
}
$ cat >> plzsucheclass1.cpp

$ g++ -Wall main.cpp plzsucheclass1.cpp -o listentest
$ ./listentest 
$ ./listentest && echo "Success"
Success

Я подозреваю, что ваша команда сборки не совсем то, что вы опубликовали здесь.

0 голосов
/ 05 февраля 2020

Если вы точно описываете проблему, ошибка может возникнуть только одним способом.

Наиболее вероятное объяснение состоит в том, что вы не точны. Либо ваша команда сборки не g++ -Wall main.cpp plzsucheclass1.cpp -o listentest, либо указанная вами main.cpp не та, которую вы компилируете (может быть, вы запустили команду g++ в другом каталоге с другим main.cpp?)

Другой вариант заключается в том, что ваш заголовок plzsucheclass1.hpp определяет main как макрос и поэтому вызывает замену int main() чем-то другим. Не делай этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...