DLL files are compiled, which means they are in machine code. If so how can a programmer invoke a function in DLL in a high level language like Java or C#?
.NET framework has a set of compatibility tools for this purpose.
In C# you'll need to write the following code in order to get access to "someclass" inside "somelibrary.dll":
[DllImport("somelibrary.dll")]
public extern someclass();