I have a native DLL which comes in both 32 bit and 64 bit versions (x86). I want to create a wrapper which works on both architectures (Any CPU) and loads the correct versio
The way I do it is to p/invoke a call to LoadLibrary before calling any of the p/invokes to the library.
LoadLibrary to load it passing the full path to the DLL.This relies on the unmanaged DLL having the same name for both 32 and 64 bit. If that's not the case then you are in trouble. In that scenario you may need to bind explicitly to the DLL by p/invoking GetProcAddress. This is no fun at all. Or you implement the sort of scaffolding that Simon describes in his answer.