Yes, dynamic libraries do have entry-points. It may be named differently (may or may not be exposed for usage), based on compiler and OS.
For Linux:
void attribute ((constructor)) my_init(void);
void attribute ((destructor)) my_fini(void);
The _init
and _fini
sections are now obsolete.
Read more