If you write embedded it can in my opinion never be a dll or so for that matter. Hence my disgust at such constructions. Embedded means fully self-contained and only needs one executable with everything - apart from the OS - linked in. Drop that Firebird shit: it lies to you. It is not in any way embedded. It introcuces a dependency to your code. So it is not embedded.
All stops when you use a dynamically linked dependency other than from the OS..