2014-01-14 1 views
1

Как узнать, будет ли программа, которую я пишу на C++, работать правильно в 32-разрядной ОС или нет?
(без ручного тестирования в одном)Что делает программу на C++ только 64-разрядной или ограниченной машиной?

Я использую Visual Studio и компилирую в 64-разрядную машину. Это остановит программу от работы на других машинах?

А как насчет процессора и версии Windows? Будет ли бинарный файл совместим с большинством версий Windows и процессоров, если программа просто выполняет несколько простых действий, таких как веб-запросы и вычисления, с простым пользовательским интерфейсом?

Моя программа не обязательно должна быть 64-разрядной. Я просто хотел бы создать один бинарный файл, который работает на большинстве компьютеров, например, каждый день, который я загружаю в Интернете. Как я мог это сделать?

+2

Вы спрашиваете, будет ли бинарный файл работать на 32-разрядной Windows или можно ли перекомпилировать исходный код для 32-разрядной Windows и как ожидается, будет работать? – NPE

+0

Я спрашиваю, будет ли бинарный файл работать на 32-битном. Я отредактирую свой вопрос. Спасибо за комментарий. – Nuno

+1

@NunoPeralta: Нет. Компилятор генерирует машинные инструкции. Очевидно, что они зависят от платформы. Вы знаете, что ваша программа совместима с x86, потому что это (или нет) архитектура, на которую вы нацелились, когда вы ее создали. –

ответ

2

Исполняемый файл, скомпилированный и связанный для 64-разрядного, обычно также требует 64-разрядных библиотек.

Используйте инструменты, такие как Dependency Walker, чтобы узнать, относится ли данный исполняемый файл к 32- или 64-разрядным библиотекам.

В Visual Studio «целевая платформа» решает, какую архитектуру процессора вы настраиваете. Совершенно возможно создавать 64-битные исполняемые файлы в 32-битной системе, но вы не можете фактически запускать их на такой машине.

4

Если вы создаете свой код специально для 64-разрядной Windows, вы не можете ожидать, что двоичный файл будет работать на 32-битной Windows. Для этого потребуется отдельная сборка.

+0

Спасибо. Но означает ли это, что мне нужно получить 32-битную машину и скомпилировать мой код там, или я могу сделать это на одной машине? Моя программа не должна быть 64-битной. Я просто хотел бы создать один бинарный файл, который работает на большинстве компьютеров, например, каждый день, который я загружаю в Интернете. Как я мог это сделать? – Nuno

+1

Просто создайте 32-битное приложение на 64-битных окнах, если ваше приложение не требует 64 бит. – drescherjm

+0

@NunoPeralta: 64-разрядные машины Windows могут компилировать и запускать 32-разрядный код. 32-разрядные машины Windows могут скомпилировать 64-битный код, но не могут его запустить. –

 Смежные вопросы

  • Нет связанных вопросов^_^