2014-10-16 19 views
5

Quindi sono abbastanza nuovo per C++, e ho questo programma scritto in blocchi di codice:C++: definizione multiplo di `mainCRTStartup' ecc errore

#include<iostream> 

using namespace std; 

int main() 
{ 
    cout << "Hello World!" << endl; 
    return 0; 
} 

quando costruire è una corsa che, ottengo un errore. Ecco il log di costruzione:

-------------- Build: Debug in HelloWorld (compiler: GNU GCC Compiler)--------------- 

mingw32-g++.exe -o bin\Debug\CPP_1.exe obj\Debug\main.o 
obj\Debug\main.o:crt1.c:(.text+0x280): multiple definition of `mainCRTStartup' 
c:/programfiles(x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../crt2.o:crt1.c:(.text+0x280): first defined here 
obj\Debug\main.o:crt1.c:(.text+0x2a0): multiple definition of `WinMainCRTStartup' 
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../crt2.o:crt1.c:(.text+0x2a0): first defined here 
obj\Debug\main.o:crt1.c:(.text+0x2c0): multiple definition of `atexit' 
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../crt2.o:crt1.c:(.text+0x2c0): first defined here 
obj\Debug\main.o:crt1.c:(.text+0x2d0): multiple definition of `_onexit' 
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../crt2.o:crt1.c:(.text+0x2d0): first defined here 
obj\Debug\main.o:cygming-crtbegin.c:(.text+0x2e0): multiple definition of `__gcc_register_frame' 
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/crtbegin.o:cygming-crtbegin.c:(.text+0x0): first defined here 
obj\Debug\main.o:cygming-crtbegin.c:(.text+0x32c): multiple definition of `__gcc_deregister_frame' 
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/crtbegin.o:cygming-crtbegin.c:(.text+0x4c): first defined here 
obj\Debug\main.o:crt1.c:(.bss+0x4): multiple definition of `_argc' 
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../crt2.o:crt1.c:(.bss+0x4):first defined here 
obj\Debug\main.o:crt1.c:(.bss+0x0): multiple definition of `_argv' 
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../crt2.o:crt1.c:(.bss+0x0): first defined here 
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/crtbegin.o:cygming-crtbegin.c:(.text+0x45): undefined reference to `_Jv_RegisterClasses' 
collect2.exe: error: ld returned 1 exit status 
Process terminated with status 1 (0 minute(s), 1 second(s)) 
13 error(s), 0 warning(s) (0 minute(s), 1 second(s)) 

Semplicemente non riesco a capire perché non funziona. Se qualcuno potesse darmi una mano, sarei molto riconoscente.

+0

È possibile che si stia utilizzando un file c non un file cpp – Conduit

+0

Qual è la riga di comando che è stata utilizzata per compilare? – user93353

+0

ha un'estensione .cpp e ho usato CodeBlocks per compilare –

risposta

1

Ho avuto lo stesso problema - e si è rivelato un caso negativo di non specificare l'output con -o name.exe Se il compilatore trova un file binario nei suoi file sorgente non ha generato un errore specifico - e invece cerca di usarlo come una libreria - che va male, quando trova due occorrenze di main e di tutto.

+0

Ho anche dimenticato l'opzione '-o' :). Grazie. – another