Приложение, созданное в Visual Studio на XP 32, дает сбой 64 при нарушении прав доступа. Перекомпилируйте в 64-битной среде, чтобы найти ошибку, работает отлично. Какие? - PullRequest
0 голосов
/ 26 декабря 2009

Итак, я разрабатывал для Windows XP Visual Studio 2008. Я предполагаю, что он строит мое приложение C ++ в 32-битном режиме. Когда я запускаю программу на моем новом 64-битном компьютере с Windows 7, она проходит половину загрузки, а затем выдает ошибку нарушения доступа. Итак, я загрузил все свои средства разработки и перекомпилировал проект на Windows 7, чтобы найти сайт сбоев, но он работает отлично! Какие? Как заставить мое приложение работать на x64? Должен ли я выпустить две отдельные версии? Я знаю, что могу использовать 64-битную систему, но мне не нравятся два отдельных исполняемых файла. Я искал, но продолжаю получать решение с двумя версиями или все .net. Это родной C ++. где-нибудь есть флаг x86?

Ответы [ 3 ]

3 голосов
/ 26 декабря 2009

«Нужно ли выпускать две отдельные версии?» Это зависит от того, что делает ваше приложение. Большинство 32-битных приложений прекрасно работают в режиме WoW .

"где-нибудь есть флаг x86?" Ага. Откройте диспетчер конфигурации (Alt-B, O), и вы, скорее всего, увидите win32 в выборе платформы.

Почему сбой вашего приложения требует отладки. Вы должны иметь возможность подключить отладчик к 32-битной версии в 64-битной ОС.

1 голос
/ 26 декабря 2009

Рассматривали ли вы возможность того, что вы можете уничтожить память? Судя по тому, как приложение загружается в память, может случиться так, что 32-разрядному приложению в 32-разрядной Windows и 64-разрядному приложению в 64-разрядной Windows «повезет», то есть никакие важные области памяти не будут перезаписаны в то время как 32-разрядное приложение на 64-разрядной Windows менее удачно и вылетает.

Чтобы узнать, действительно ли вы загружаете память, вы можете использовать такие инструменты, как Purify и Valgrind .

0 голосов
/ 26 декабря 2009

Как уже говорилось в ответах других, весьма вероятно, что в приложении есть ошибки, которые скрыты в одной среде. Хороший инструмент с низкой стоимостью ввода в плане обучения - это верификатор приложений Microsoft . Это вместе с инструментами отладки может обеспечить очень хорошее начало. Посмотрите на утилиту gflags.

...