2017-05-07 2 views
0

Ich benutze MinGW mit g ++ (5.3.0), um C und C++ für eine Weile zu kompilieren.MinGW Absturz wenn nicht kompiliert mit -static-libstdC++

Ich bin mir ziemlich sicher, dass ich nichts geändert habe, aber anscheinend habe ich es gemacht, als ich meine DLLs kompilierte, bemerkte ich, dass ich sie nicht laden konnte, wenn ich std :: string oder std :: unique_ptr verwendete.
Später bemerkte ich, dass jedes einzelne Programm, das ich kompiliert habe, beim Start abgestürzt ist.

Irgendwie kam das mit -static-libstdC++ als Linker-Flag, die meine Dateigrößen sprengte.

Heute habe ich meinen Computer hochgefahren und alles war verrückt geworden.

SSCCE:

int main() {} 

Wenn mit g++ sscce.cpp -o sscce.exe Kompilieren es funktioniert, aber wenn ich

tun
g++ -c sscce.cpp -o sscce.o 
g++ sscce.o -o sscce.exe 

ich dieses:

main.o:main.cpp:(.text+0x280): multiple definition of `_mingw32_init_mainargs' 
d:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../crt2.o:(.text+0x280): first defined here 
main.o:main.cpp:(.text+0x2c0): multiple definition of `mainCRTStartup' 
d:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../crt2.o:(.text+0x2c0): first defined here 
main.o:main.cpp:(.text+0x2e0): multiple definition of `WinMainCRTStartup' 
d:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../crt2.o:(.text+0x2e0): first defined here 
main.o:main.cpp:(.text+0x300): multiple definition of `atexit' 
d:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../crt2.o:(.text+0x300): first defined here 
main.o:main.cpp:(.text+0x310): multiple definition of `_onexit' 
d:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../crt2.o:(.text+0x310): first defined here 
main.o:main.cpp:(.text+0x320): multiple definition of `__gcc_register_frame' 
d:/mingw/bin/../lib/gcc/mingw32/5.3.0/crtbegin.o:(.text+0x0): first defined here 
main.o:main.cpp:(.text+0x410): multiple definition of `__gcc_deregister_frame' 
d:/mingw/bin/../lib/gcc/mingw32/5.3.0/crtbegin.o:(.text+0xf0): first defined here 
main.o:main.cpp:(.bss+0x4): multiple definition of `_argc' 
d:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../crt2.o:(.bss+0x4): first defined here 
main.o:main.cpp:(.bss+0x0): multiple definition of `_argv' 
d:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../crt2.o:(.bss+0x0): first defined here 
main.o:main.cpp:(.eh_fram+0xc8): multiple definition of `__EH_FRAME_BEGIN__' 
d:/mingw/bin/../lib/gcc/mingw32/5.3.0/crtbegin.o:(.eh_frame+0x0): first defined here 
d:/mingw/bin/../lib/gcc/mingw32/5.3.0/crtbegin.o:(.text+0x92): undefined reference to `_Jv_RegisterClasses' 
collect2.exe: error: ld returned 1 exit status 

Warum dies und geschieht, was ich kann tun, damit es aufhört?

Antwort

0

Wörtlich nichts berührt, nicht einmal mein PC, und jetzt funktioniert es wieder.