Puoi sicuramente restituire un puntatore ad un oggetto allocato dinamicamente a patto che le due parti (main e dll) conoscano la classe dell'oggetto (utilizzano ambedue lo stesso class.h in cui è descritta la classe).

Parliamo di C++ ?