Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Может ли 64-битный EXE-файл связать 32-битные библиотеки DLL?

Автор вопроса: Assaf LavieОтветов: 3

Я спрашиваю, потому что заметил, что многие 64-битные EXE-файлы ссылаются на то, что кажется 32-битными DLL.

Например, мое 64-битное приложение MFC ссылается на user32.dll, urlmon.dll, wininet.dll - все это 32-битные библиотеки DLL, которые находятся в windows\system32.

Так это какое-то специфическое волшебство MS, которое применяется к этим библиотекам DLL, или существует обратная совместимость, так сказать, для 64-битных EXE-файлов, которым необходимо использовать устаревшие 32-битные библиотеки DLL?

  • Думаю, мы все готовы к следующей версии Dependency Walker. Он обрабатывает 64-битные исполняемые файлы иногда вводящим в заблуждение образом и показывает некоторые другие раздражающие предупреждения. На самом деле это не ошибки, но их можно представить лучше. Я думаю, что такие вопросы - это +1 для новой версии. eran 12.07.2009
  • @Eran, я скачал последние зависимости для 64-битной версии, и она показывает зависимые библиотеки DLL как 64. Assaf Lavie 13.07.2009
  • На самом деле есть некоторое волшебство - в Win64 64-битная ntdll.dll загружается во ВСЕ процессы, как 32-битные, так и 64-битные. Но ничего волшебного ни в одной из упомянутых вами библиотек DLL. Ben Voigt 27.09.2012
  • blog.mattmags.com /2007/06/30/ Z80 07.09.2017

windowsdll64-bit

Ответы

Ответ 1 · рейтинг 24 · Curt Hagenlocher

Вы не можете связать 64-битные EXE-файлы с 32-битными DLL или наоборот. В 64-разрядной ОС Windows библиотеки DLL в Windows\System32 на самом деле являются 64-разрядными библиотеками DLL. 32-разрядные версии находятся в папке Windows\SysWow64.

Ответ 2 · рейтинг 13 · Sheldon

Позвоните 32 из 64, конечно можно. (В Windows это называется WOW, что означает Windows для Windows). Но, наоборот, это не работает.

Здесь у вас есть объяснение того, как:

http://blog.mattmags.com/2007/06/30/accessing-32-bit-dlls-from-64-bit-code/

Надеюсь, послужит.

Ответ 3 · рейтинг 2 · Some Guy

Последняя версия Dependency Walker (находится здесь: http://www.dependencywalker.com/) устраняет эту проблему. . Он находит правильные библиотеки DLL и избегает неточных ошибок.

(Я опаздываю на вечеринку, но гугл все же нашел этот вопрос, когда у меня была аналогичная проблема.)

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы