Due to different processor instruction sets for 32 and 64 bit operating mode it is not possible to call 32 bit DLLs directly from 64 bit host application in Windows and vice versa - for that 32 and 64 bit instructions would have to be mapped into one common address space which is not supported by Windows. The only (well known) solution for this problem (if you don't have access to the originals DLL source code in order to recompile it as a 64 bit DLL) is to write a 64 bit wrapper DLL that forwards every function call via inter-process communication to the original 32 bit DLL linked to a 32 bit server process.

Until recently such a wrapper DLL had to be written by hand including the inter-process communication code inside it and a 32 bit server process which could take a week or more even for an experienced software developer depending on the number of interface functions the original DLL provides. But now DLLWrapper can do the job automatically in a few seconds in very many cases! The only input that the tool needs is the original DLL that it should wrap and a C header file describing the interface functions of the DLL. Ideally a suitable header file will have been delivered by the vendor of the DLL - if this is not the case, you'll have to write a header file by yourself by extracting the necessary information from some form of documentation that should have been provided by the vendor of the DLL at least.

In order to wrap for instance an unmanaged 32 bit target DLL so that it can be used again in a 64 bit environment by a host program like the 64 bit version of Matlab for example, the tool will generate a 64 bit wrapper DLL providing the same functions as the original 32 bit target DLL as well as a 32 bit wrapper EXE which will link the original DLL and two proxy / stub DLLs for inter process communication marshalling. When the 64 bit host program loads the wrapper DLL and starts calling a function provided by the DLL, the function call will be mapped to the invocation of a COM object method passing the barrier between the 64 bit process environment of the host application and the 32 bit process environment of the target DLL by executing the call in the environment of the wrapper EXE as shown below:

If you'd like to know more about what DLLWrapper can (or maybe can't) do for you, you can have a look into the DLLWrapper manual here without the need to install the software first.