Почему некоторые программы, скомпилированные для x86, не работают под x64, а некоторые - - PullRequest
5 голосов
/ 29 ноября 2010

Я видел, что некоторые программы, написанные мной и собранные для x86 с использованием ml.exe, отлично работают на моей Win 7 x64.Я полагаю, что это из-за технологии Wow.

Однако, есть некоторые программы (не написанные мной), которые не работают.Они выдают ошибку: Версия этого файла не совместима с версией Windows, которую вы используете.Проверьте информацию о вашей компьютерной системе, чтобы узнать, нужна ли вам версия программы для x86 (32-разрядная) или x64 (64-разрядная), а затем обратитесь к издателю программного обеспечения

Можно ли как-нибудьизмените EXE этих программ, чтобы он работал на Win 7 x64.В чем принципиальное отличие этих программ от других программ, которые работают прозрачно.

Ответы [ 2 ]

6 голосов
/ 29 ноября 2010

На самом деле это 8- или 16-битные программы. Windows x64 работает в длинном режиме, который не поддерживает режим Virtual 8086, необходимый для таких программ. Невозможно заставить их работать, если не перекомпилировать их из исходного кода или запустить на виртуальной машине.

0 голосов
/ 15 марта 2013

Одной из причин может быть комбинация .NET и нативных библиотек. Библиотеки .NET компилируются во время выполнения как x64 (если вы не указали явно x86), а собственные библиотеки работают в режиме x86. он не может работать вместе.

Другая причина - доступ к реестру. В зависимости от используемого API, x86app в режиме wow64 может быть перенаправлен в другую часть реестра. Если API доступа к реестру несовместим, это может вызвать проблемы.

...