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.