I would like to add some external .dll libraries e.g. glut32.dll (but it’s only example) in Visual Studio 2008, using C#.
Can you please tell me what should I do step by step?
I am a little bit confused cause I found a lot of solutions to add dll files, but they significantly differ.
Some of them add dll’s only using code, some using properties in vs, add references and in other tutorials there is about registering dlls in system.
But how to put it all together?
There are different kinds of DLLs, you’ll need to treat them differently when you use them in a C# project. The 3 main kinds are:
The first kind is the one you’ll encounter a lot for DLLs in the wild. There’s a lot of code written for Windows in an unmanaged language. It isn’t a kind of DLL that’s particularly easy to use from managed code. Glut32.dll for example has a lot of exported functions, writing a P/Invoke declaration for every single one of them is painful.
Tools you can use to help with this are SWIG and PInvoke Interop Assistant. The former is required when the DLL was written in the C++ language. C++ classes are not directly usable from a C# program, they need a wrapper written in the C++/CLI language. The latter tool is useful for DLLs written in C, including the Windows API.
Beware that those tools don’t usually give you a clean and guaranteed-to-work interop solution. Declarations in unmanaged code are ambiguous, you’ll need to know the exact semantics of the arguments of an unmanaged function to pick the right one. Getting the wrong one can be hard to diagnose, the best place to get help is a forum or Q+A site. Like stackoverflow.com