Как я могу сказать, являюсь ли я на x64 или x86 с помощью.NET?

Компиляторы действительно могут зарезервировать дополнительную память для себя.

У Gcc есть флаг -mpreferred-stack-boundary, чтобы установить выравнивание, которое оно будет поддерживать. Согласно документации значение по умолчанию равно 4, что должно приводить к 16-байтовому выравниванию, которое необходимо для инструкций SSE.

Как VermillionAzure отмечен в комментарии , вы должны предоставить свои параметры версии gcc и времени компиляции (используйте gcc -v, чтобы показать их).

5
задан Domenic 18 September 2008 в 08:07
поделиться

5 ответов

Environment.Is64BitOperatingSystem и Environment.Is64BitProcess вводятся в .NET 4. Для .NET 2 вам нужно будет попробовать некоторые другие ответы .

5
ответ дан 14 December 2019 в 09:05
поделиться

Звонить IsWow64Process узнать, работает ли Ваш 32-разрядный процесс в WOW64 в 64-разрядной операционной системе. Можно звонить GetNativeSystemInfo для обнаружения точно, каково это: wProcessorArchitecture member из SYSTEM_INFO будет PROCESSOR_ARCHITECTURE_INTEL для 32-разрядного, PROCESSOR_ARCHITECTURE_AMD64 для x64 и PROCESSOR_ARCHITECTURE_IA64 для Itanium Intel.

4
ответ дан 14 December 2019 в 09:05
поделиться

Проверьте размер IntPtr с Маршалом. SizeOf. 32 бита = 4 байта, 64 бита = 8 байтов.

Править: Я не уверен, что это - то, что Вы ищете после чтения вопроса снова.

0
ответ дан 14 December 2019 в 09:05
поделиться

Проверьте просто IntPtr.Size . У Вас должна быть целевая платформа как у AnyCPU.

отсюда

-2
ответ дан 14 December 2019 в 09:05
поделиться

Многое можно определить с помощью переменных окружения, используемых в C # - Как получить программные файлы (x86) в 64-битной Windows [И это случилось мне лучше, чем ответ Майка, который я +1 'd, так как мне интересно найти имя каталога Program Files]

0
ответ дан 14 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: