IMHO breaking code into modules is always good. Among other way to split it, dll is quite a radical one It force you to have very well defined interfaces between different modules, which is extremely important if you ask me.
On the other side, it gives some extra work: for example for each DLL you have to write a header file in which you import all exported procedure.
Other problems exists for some data types, for example string need some special attentions to be used (as it says when you create a dll in delphi).
Using classes in the DLL interface (for example as a parameter) should work but in this way you will have a DLL that is usable only in delphi and in no other language.
The right way should be creating a plain API interface layer on top of your OO code, with normal flat calls, maybe using pchar instead of strings.
This is obviously some extra work.

Remember that this is only my opinion

Bye!