Подтвердить что ты не робот

Загрузить 32-битную библиотеку DLL в 64-битном приложении

Есть ли способ загрузить 32-битную библиотеку DLL (что-то с тем же использованием, что и LoadLibrary), я хотел бы использовать эту функцию вместе с GetProcAddress.

Я посмотрел на WOW, но он, похоже, не предлагает функциональности. Функциональность должна существовать, поскольку такие инструменты, как DependencyWalker, могут читать символы 32-разрядной библиотеки DLL, даже если ее 64 бита.

спасибо

4b9b3361

Ответ 1

Извините, но вы можете загружать 32-битную DLL в 64-разрядный процесс, когда вы загружаете dll в качестве файла данных. Вы не можете выполнить код. http://support.microsoft.com/kb/282423

Корпорация Майкрософт рекомендует использовать межпроцессорный COM для использования 32-битного кода с 64-разрядным приложением. Здесь статья, объясняющая процесс http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/ Это не весело.

Ответ 2

Есть разница между чтением 32-битного исполняемого и исполняемого кода в 32-битном исполняемом файле. Я не считаю, что Windows предлагает любую функциональность для этого.

Единственный способ, которым вы, вероятно, сможете это сделать, - создать 32-битный процесс, который загружает DLL, а затем выполняет межпроцессную связь для передачи результатов между двумя процессами.

Ответ 3

Если все, что вы хотите сделать, это получить от него ресурсы, вы можете загрузить в качестве файла данных:

LoadLibraryEx(exeName, NULL, LOAD_LIBRARY_AS_DATAFILE);

Затем вызовите FindResource как обычно.