Multiple definition linker errors

I have an executable with two .cpp files, each of which includes a header file that in turn includes boost headers. When I link them (gcc 3.2.3) I am greeted with multiple definition errors on somewhat random symbols like '(anonymous namespace)::_1' (through _9) from bind or equality operators in zip_iterator etc. All my header files are properly wrapped with #ifndefs, I have only one global variable that does not involve boost, and everything links fine for executables with only one .cpp file that includes this same header. I assume the fix lies with the gcc command line, either a missing flag or the order of arguments. Does anyone know how to fix this or what information would be useful in tracking this down? I'm out of ideas. Sincerely, Mark Ruzon

Mark Ruzon wrote:
I have an executable with two .cpp files, each of which includes a header file that in turn includes boost headers. When I link them (gcc 3.2.3) I am greeted with multiple definition errors on somewhat random symbols like '(anonymous namespace)::_1' (through _9) from bind...
This can be caused by precompiled headers not handling anonymous namespaces correctly. You can use the following patch: http://boost.cvs.sourceforge.net/boost/boost/boost/bind/placeholders.hpp?r1=1.13&r2=1.14 to fix that.
participants (2)
-
Mark Ruzon
-
Peter Dimov