Программное обеспечение .NET, работающее на x64, но скомпилированное на x86 для любого процессора (VS2008) - PullRequest
0 голосов
/ 25 февраля 2011

У меня проблема, из-за которой я получаю ошибки во время выполнения скомпилированной программы.Это прекрасно работает в среде разработки (x86), но не в производственной среде (то есть x64).

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

Так ли это, и если да, следует ли когда-либо компилировать программное обеспечение под любым процессором (что, по-видимому, приводит к несоответствию между двумя средами)?

1 Ответ

2 голосов
/ 25 февраля 2011

AnyCPU отлично подходит, если вы используете только управляемый код.Управляемый код может быть выполнен в 32-битном или 64-битном процессе.С AnyCPU платформа выбирает разрядность, присущую ОС.

То же самое не относится к неуправляемому коду.Он должен быть скомпилирован как 32-битный или 64-битный код.Конечно, благодаря подсистеме WoW64 64-битная Windows может запускать 64-битные процессы.

Но 64-битные процессы не могут загружать 32-битные модули (DLL, OCX и т. Д.).

Это означает, что если ваша программа использует неуправляемые модули какого-либо типа, лучше установить вручную битность, чтобы все компоненты имели одинаковую битность.

...