Hi, I'm after a bit of help with regards to linking and the pros / cons of static vs dynamic linking.

At present, We have a large application consisting of ~120 libs / dlls and a 20meg .exe file. Now, looking at most of the projects it seems we almost always build and link to dll's rather than to static libs. The linking is very rarely done at run-time though because almost all of it is used in the application so it all loads at startup.

What is getting to me is that this is one application and we seem to have dll's that are exclusively loaded at startup, never on the fly, which is surely the advantage of dlls?

Why aren't we just using libs? We would then presumably end up with a huge 150 meg .exe file which doesn't sound right to me...but why shouldn't we do it like that? It is one application and surely it'd be faster like that rather than loading 80+ of our own dll's on startup?

I hope my terminology is correct here.

I suppose ultimately my question is this. If you load dll's at startup ALL THE TIME, what is dynamic about that? Why not just use libs?

Thanks for any help on this,

Lewis