Подтвердить что ты не робот

Ошибка компиляции: Undefined символы: "_main", на которые ссылаются: start at crt1.10.5.o

У меня есть следующий код:

#include <iostream>

using namespace std;

class testing{
   int test() const;
   int test1(const testing& test2);
};

int testing::test() const{
   return 1;
}

int testing::test1(const testing& test2){
   test2.test();
   return 1;
}

после компиляции он вызывает следующую ошибку:

Undefined symbols:
  "_main", referenced from:
      start in crt1.10.5.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Почему он жалуется на главную? Не могу я объявить main в другом файле и включить этот?

Спасибо большое!

4b9b3361

Ответ 1

Вы уже пытались связать его:

g++ file.cpp

Это не только скомпилирует его, но и попытается создать исполняемый файл. Затем компоновщик не может найти основную функцию, в которой он нуждается. Ну, сделайте это так:

g++ -c file.cpp
g++ -c hasmain.cpp

Это создаст два файла file.o и hasmain.o, оба только скомпилированные до сих пор. Теперь вы можете связать их вместе с g++:

g++ -omy_program hasmain.o file.o

Будет автоматически выяснено, что эти файлы уже скомпилированы и вызывают на них компоновщик, чтобы создать файл "my_program", который является вашим исполняемым файлом.

Ответ 2

Если вы объявите основную функцию в другом файле, вы должны скомпилировать эти два файла отдельно, а затем связать их с одним исполняемым файлом.

Если вы не включите все содержимое файла из файла с главной функцией, это тоже будет работать, хотя и немного странно. Но, если вы это сделаете, вам нужно убедиться, что вы скомпилируете файл с функцией main().