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.
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?