I'm having this same error happen to me too. My program compiles fine under UNIX & GCC, and when I compile with MinGW GCC in the command line, but not using Code::Blocks.
-------------- Build: default in pretest ---------------
mingw32-g++.exe -Wall -I- -I. -I"C:\Program Files\MinGW\include" -I -c TestStack.cpp -o .objs\TestStack.o
mingw32-g++.exe -L"C:\Program Files\MinGW\lib" -o TestStack.exe .objs\TestStack.o
.objs\TestStack.o:locale-misc-inst.cc:(.text+0x270): multiple definition of `mainCRTStartup'
C:/Program Files/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../crt2.o:crt1.c:(.text+0x270): first defined here
.objs\TestStack.o:locale-misc-inst.cc:(.text+0x290): multiple definition of `WinMainCRTStartup'
C:/Program Files/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../crt2.o:crt1.c:(.text+0x290): first defined here
.objs\TestStack.o:locale-misc-inst.cc:(.text+0x2b0): multiple definition of `atexit'
C:/Program Files/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../crt2.o:crt1.c:(.text+0x2b0): first defined here
.objs\TestStack.o:locale-misc-inst.cc:(.text+0x2c0): multiple definition of `_onexit'
C:/Program Files/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../crt2.o:crt1.c:(.text+0x2c0): first defined here
.objs\TestStack.o:locale-misc-inst.cc:(.text+0x2d0): multiple definition of `__do_sjlj_init'
C:/Program Files/MinGW/bin/../lib/gcc/mingw32/3.4.5/crtbegin.o:crtstuff.c:(.text+0x0): first defined here
.objs\TestStack.o:crtstuff.c:(.bss+0x4): multiple definition of `_argc'
C:/Program Files/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../crt2.o:crt1.c:(.bss+0x4): first defined here
.objs\TestStack.o:crtstuff.c:(.bss+0x0): multiple definition of `_argv'
C:/Program Files/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../crt2.o:crt1.c:(.bss+0x0): first defined here
C:\Program Files\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: BFD 2.16.91 20050827 assertion fail ../../src/bfd/cofflink.c:1926
collect2: ld returned 5 exit status
Process terminated with status 1 (0 minutes, 3 seconds)
0 errors, 0 warnings