2009-02-15 10 views
17

tengo el siguiente código:error de compilación: símbolos no definidos: "_main", se hace referencia a partir de: comenzar en 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; 
} 

después de la compilación, me da el siguiente error:

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

¿Por qué se queja de main? ¿No puedo declarar main en otro archivo e incluir este?

¡Muchas gracias!

Respuesta

22

Usted ha tratado de vincular ya:

g++ file.cpp 

Eso no sólo lo compilará, pero intenta crear ya el ejecutable. El vinculador no puede encontrar la función principal que necesita. Así, hacerlo de esta manera:

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

que crearán dos archivos file.o y hasmain.o, tanto limitado a reunir hasta el momento. Ahora se puede vincularlos con g ++:

g++ -omy_program hasmain.o file.o 

Se mostrará automáticamente que esos son archivos ya compilados, e invocar el enlazador en ellos para crear un archivo "my_program", que es el ejecutable.

1

Si declara la función principal en otro archivo, debe compilar los dos archivos por separado y luego vincularlos en 1 ejecutable.

A menos que incluya todo el contenido del archivo del archivo con la función principal, eso funcionará también, aunque un poco extraño. Pero, si haces esto, entonces debes asegurarte de compilar el archivo que tiene la función main().

Cuestiones relacionadas