I got some dll project that i compile to dll (say it is a.dll) I also got other dll project that i also compile to dll (say it is b.dll) (both dlls calls each other) I got one quite serious problem: When i compile a.dll i need b.dll image to be present on disk, otherwise it will not compile.. If i mistakenly delete both images im in dark cyclic hell and i cant compile none of them (then, to resolve it, i must comment outdependencies - compile - uncomment - compile - etc.. which is very very annoying) (and i may mistakenly delete both easily, i just need to call script that compiles both a and b; when there is simple compile error in a then it will be deleted, then call to compile b will not compile too, and now b is also deleted and now i got real trouble) The question is mainly: Why GCC (i use gcc5/mingw) need those dll images at all - I know that to compile dll i just need to build import section which just need dll module name and symbol names provided, dll image should be not needed) Can i 'off' this need for dll image and recompile projest without it ? (also i dont want to use so called import libraries, as those are almost the same as dll only a bit more burden to make it) (additional: 3,. Is this cyclic hell wide known thing?, how to resolve it? (i may add i dont want to add full dynamic linkn by GetProcAdress i need static like liniking only without mentioned troubles) (sorry for weak english)