Absolutely, you can give other people DLLs without access to the source code. In most situations like this, you would obfuscate the dll (many tools to do this, I would start with the Dotfuscator included with Visual Studio) so they can't decompile it.
If you want them to be able to see the source, there isn't much you can do to avoid them copying it, same with "disabling their ability to use it". If they have a copy of the file, there isn't much you can stop them from doing (technologically speaking). The only security I can think of for that would be to have all public functions check against some server before executing (thus making the DLL useless if you have that server not allow them to run), but that isn't 100% and would make for a terrible experience for end-users of the code.