let a.C and b.C contain classes a and b respectivly and let class b require class a. now if they get linked like this:
g++ b.C a.C
then all is well because the linker links b and is now looking for class a which it then finds, if however they are linked like this:
g++ a.C b.C
then the linker links class a and promptly forgets about it, then links class b which has a reference to class a it cant find, hence the unresolved external. so im guessing that *.o is picking out the files in lexographical order and some symbols are getting missed, provide the object files in the correct order and that might fix things.