Yet another undefined reference problem with mingw [SOLVED]

Could someone please help with my linker problem?

‘sdl2-config --cflags --libs’ returns

-I/usr/include/SDL2 -Dmain=SDL_main
-L/usr/lib -lmingw32 -lSDL2main -lSDL2 -mwindows

These are my build commands:

g++ -g -c GeneralizedIFS.cpp -o GeneralizedIFS.o
g++ -I/c/Users/Brent/Documents/Source/SDL2-2.0.12/x86_64-w64-mingw32/include/SDL2 -Dmain=SDL_main -g -c Geniter.cpp -o Geniter.o
g++ -L/c/Users/Brent/Documents/Source/SDL2-2.0.12/x86_64-w64-mingw32/lib -lmingw32 -lSDL2main -lSDL2 -mwindows GeneralizedIFS.o Geniter.o -o Geniter

I get these same errors when linking whether I point to usr/, i686-w64-mingw32/, or x86_64-w64-mingw32/. I get no warnings or errors when compiling unless I use gcc.

c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../libmingw32.a(main.o):(.text.startup+0xc0): undefined reference to `WinMain@16'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: Geniter.o: in function `SDL_main': c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:159: undefined reference to `SDL_Init'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:160: undefined reference to `SDL_CreateWindow'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:179: undefined reference to `SDL_PollEvent'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:183: undefined reference to `SDL_GetTicks'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:188: undefined reference to `SDL_GetTicks'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:240: undefined reference to `SDL_Quit'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: Geniter.o: in function `Z11PaintPointsR11EngineState': c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:484: undefined reference to `SDL_GetWindowSurface'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:620: undefined reference to `SDL_GetRenderer'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:620: undefined reference to `SDL_RenderPresent'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: Geniter.o: in function `Z19HandleKeyboardEventiR11EngineState': c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:808: undefined reference to `SDL_RWFromFile'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:808: undefined reference to `SDL_GetWindowSurface'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:808: undefined reference to `SDL_SaveBMP_RW'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: Geniter.o: in function `Z11HandleTweakiR11EngineState': c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:876: undefined reference to `SDL_GetWindowSurface'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:876: undefined reference to `SDL_FillRect'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:891: undefined reference to `SDL_GetWindowSurface'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:891: undefined reference to `SDL_FillRect'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:897: undefined reference to `SDL_GetWindowSurface'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:897: undefined reference to `SDL_FillRect'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:903: undefined reference to `SDL_GetWindowSurface'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:903: undefined reference to `SDL_FillRect'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:909: undefined reference to `SDL_GetWindowSurface'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:909: undefined reference to `SDL_FillRect'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: Geniter.o: in function `Z13ChangeCurrIFSR11EngineStatej': c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:933: undefined reference to `SDL_GetWindowSurface'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:\Users\Brent\Documents\Source\Geniter/Geniter.cpp:933: undefined reference to `SDL_FillRect'
collect2.exe: error: ld returned 1 exit status

Try changing your linker command so that the libs come last. Like:

g++ -o binary object1.o objectN.o -llib1 -llibN

Thanks for your feedback! Unfortunately, the only difference that makes is that the linker waits until the end to complain about WinMain@16.

…But then I tried switching back to the 32-bit library, and bam it worked! Thanks again!