What is the difference between an ActiveX control and a DLL?

What is the basis for selecting between them?