Today when working a project on win32 Visual Studio 2005, I went to compile and got tons of errors similar to above. Here's a sample:
1>Linking...
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: _calloc already defined in LIBCMT.lib(calloc.obj)
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: _wcschr already defined in LIBCMT.lib(wcschr.obj)
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: __wcsdup already defined in LIBCMT.lib(wcsdup.obj)
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: _swscanf already defined in LIBCMT.lib(swscanf.obj)
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: _wcsncmp already defined in LIBCMT.lib(wcsncmp.obj)
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: _malloc already defined in LIBCMT.lib(malloc.obj)
1>MSVCRT.lib(MSVCR80.dll) : error LNK2005: __wtoi already defined in LIBCMT.lib(wtox.obj)
....
After searching in vain for a while, I finally found that this is caused when you mix static and dll builds. So the solution was pretty easy: rebuild wxWidgets and my project using /MT[d] (Multi-threaded [debug]) and all is well.
So there you have it. I hope this saves someone else a half-hour of fruitless searching.