DLL's are not written in any specific language. They contain machine code organized into the common programming "routine" concept, along with a table ("export"/"import"-table) used to map these routines to an application's address space.
Any language can be used to write a DLL, so-long as it's supported. But, by far the most appropiate language to develop them in is C/C++ or Assembly. Or any low-level language.
All current (kernel) DLL's under Window's are written in C (Not C++). Additionally, they are all of the __stdcall calling convention (Parameters are pushed onto the stack left-to-right).
-Matt