In a past project, we had two huge DLLs for several dozen objects. I was responsible for one (VC++ 6), and some other folks for the other (VB6).
On one hand, it would have been nice to have everything in one language and in one DLL. We would have solved a lot of technical problems that way.
On the other hand, some objects got bundled together, which shouldn't have been. In my DLL, there were effectively two layers... one which group A used, and one which group B used. Sometimes there was overlap. It would have made more sence to have that in seperate DLLs.
Hope this helps a little. Assuming no technical language barriers, break it down by close functionality.