Я тут подметил интересную вещь: Игра для Windows CE написанная на .NET CF запускается на Win32 (x86) и после нескольких MessageBox завершается В поле типа машины стоит 14Ch = x86 Вопрос: Как она луадиться на ARM и на x86?
Quantum А чтож там еще может быть? Конечно IL - если только модуль не написан на С++ with Managed Extensions - этот язык позволяет смешивать IL и Native. CnCVK Ну вооще-то так и должно быть. Компоненты целевая платформа которых .NET CF будут запускаться только там где есть .NET CF. То же самое и с полноценным .NET Framework. Все происходит потому что строгие имена компонентов FCL .NET Compact Framework и .NET Framework различаются.
Quantum Ну вообще-то в .NET исполняемых файлах должен пристутствовать именно Intermediate Language код - это часть платформы. И если это .NET Compact Framework, то ничего не меняется. Компиляция в код целевой платформы просходит на лету во время загрузки. Учитывая, что для на Visual C++ with Managed Extenstions не пришут приложения для ARM, то там не может быть Native кода. Как ты определяешь ARM там код или нет?? ILDasm? CnCVK Хз. Впринципе теоретически учитывая, что IL не зависит от платформы это не должно вызывать трудностей. А так об этом нигде не написано, кроме IDA.
CnCVK IL вообще не грузиться , грузятся управляемые модули, которые содержат файл с декларацией. А вместе с ними грузится общеязыковая исполняющая среда (CLR) - да именно через стандартный загрузчик. Но вообще, когда устанавливается .NET Framework загрузчик правиться - например, он может различать управляемые модули по COM Descriptor директории, а до это не мог Если эта директория присутствует, то в адресное пространство процесса загружается исполняющая DLL - MSCOREE.DLL. Кароч загрузчик тот, но он изменяется для поддержки .NET софта.
Bill_Prisoner Ну, я не понял, что речь про .NET экзешники, т.к. не встречал таких ещё, хотя слышал, что они есть (поэтому и предположил, что там может быть платформо-независимый IL). Естественно, такой экзешник загрузится везде, где есть интерпретатор, хоть на x86, хоть на арме.
Quantum Да вот в том-то и дело, что не везде. Теоретически, да. Но платформы различаются! На покетах - .NET Framework Compact, на писюках - .NET Framework. Они не совместимы на данный момент. Но Micro$oft в будущем планирует сделать их совместимыми. И кстати не "интерпретатор", а JIT-компилятор - ну не мне Вам Quantum рассказывать Для Windows 9x/Me - да там вообще есть истинно платформная зависимость - на EP стоит переход - JMP - для x86 платформ. Одним словом не удасться запустить проги на разных платформах. Покрайней мере сейчас. Если даже далее MS сделает совместимость фрэймворков, то у Framework Compact есть серьезные ограничения (для примера нельзя в делегатах использовать асинхронные вызовы или к примеру нельзя создавать мультимодульные сборки) - надо будет писать с наименьшим общим знаменателем Compact Framework.