Thanks for the reply ! Yes of course I usually write #ifndef ect. definition into header files, but it's not a problem with this... main issue of this is in the namespace... because my major project is in C++ CLI how's You know isn't the same what is pure C++ ( unmanaged probably ) so, i'm not able to declare object of pure class ( example : class Test; and in managed class : ref class { ... public : Test object; ) i understand how can i resolve this problem -> i should declare pointer of unmanaged class : Test *object into managed class. But unfortunately my supervisor ( he hasn't seen my project yet ) wants or requires use auto_ptr ( because of memory leak ) , so i use this "intelligent" pointer in namespace area : namespace TestSpace { auto_ptr object; ref class ClassTest { object->... }; } and it works, but main problem is when i compile this code , and i have main order with header files same to You , 'm receiving information about the same or two definitions ( already defined ). I noticed that i haven't this problem if i don't use or i don't declare all of objects , variables in namespace like above... i think it's because of declarations in namespace , Ideal solution would be place declarations into ref class and i think it won't be compile error , but how's i said unfortunately we can't declare auto_ptr in ref class because of unmanaged and managed code error , and this is infinite loop... if i hadn't seen on my supervisior i would have written this with usual pointers ... : Test *object in ref class and no problem for me... but i can't imagine what would be if my teacher see this solution... Of course if you don't find any more precisely solution , i'll do this with convenient linker option : /FORCE and i don't see this error... but You know... it's just like an strong solution... Thanks for help