2017-05-07 5 views
0

J'utilise MinGW avec g ++ (5.3.0) pour compiler C et C++ pendant un moment maintenant. Je suis sûr que je n'ai rien changé, mais apparemment je l'ai fait parce que quand j'ai compilé mes DLL j'ai remarqué que je ne pouvais pas les charger quand j'ai utilisé std :: string ou std :: unique_ptr.
Plus tard, j'ai remarqué que chaque programme que j'ai compilé venait de tomber en panne au démarrage.Crash MinGW s'il n'est pas compilé avec -static-libstdC++

Kinda a fait cela en utilisant -static-libstdC++ comme indicateur de lien, ce qui a fait exploser la taille de mes fichiers.

Aujourd'hui j'ai allumé mon ordinateur et tout est devenu fou.

SSCCE:

int main() {} 

Lors de la compilation avec g++ sscce.cpp -o sscce.exe cela fonctionne, mais quand je fais

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

Je reçois ceci:

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 

Pourquoi cela arrive et que puis-je faire pour l'arrêter?

Répondre

0

Littéralement n'a rien touché, pas même mon PC, et maintenant il fonctionne à nouveau.