Load 32bit DLL library in 64bit application

89,339

Solution 1

You can only load a 32bit DLL into a 64 bit process when you are loading the dll as a datafile. You can't execute the code. (http://support.microsoft.com/kb/282423)

Microsoft recommends that you use interprocess COM to use 32 bit code with a 64 bit application. Here's an article explaining the process.

Solution 2

If all you're wanting to do is get resources from it, you can load as a datafile:

LoadLibraryEx(exeName, NULL, LOAD_LIBRARY_AS_DATAFILE);

Then call FindResource as normal.

Solution 3

There's a difference between reading a 32 bit executable and executing code within a 32 bit executable. I don't believe that windows offers any functionality to do that.

The only way you're likely to be able to do that is to create a 32 bit process that loads the dll and then do interprocess communication to pass the results between the two processes.

Share:
89,339
adk
Author by

adk

Updated on July 18, 2022

Comments

  • adk
    adk almost 2 years

    Is there a way to load a 32bit DLL library (something with the same usage as LoadLibrary) I would like to use that function along with GetProcAddress.

    I looked at WOW, but it does not seem to offer the functionality. The functionality should exist, since tools like DependencyWalker are able to read the symbols of a 32bit dll even though its 64bits.

    thanks

  • Ed Greaves
    Ed Greaves over 11 years
  • Max Kleiner
    Max Kleiner about 4 years
    LOAD_LIBRARY_AS_DATAFILE is Const LOAD_LIBRARY_AS_DATAFILE = $00000002; and free also the handle: FreeLibrary(LibHandle64);