32-битный проект С# под 64-битными окнами

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

Я провел небольшое исследование и выяснил, что можно разрабатывать приложения x86 в системе x64, но теперь я не знаю, хочу ли я этого. Создателем проблем, очевидно, является DirectX SDK. Другой вариант AFAICS - установить виртуальную машину x86 специально для разработки этого приложения (мне не нужна двойная загрузка). Я никогда не использовал это раньше, поэтому я немного беспокоюсь, что все это оборудование не будет работать под виртуальной машиной. Я использую wiimoteLib и blueSoleil для подключения Bluetooth. Так будет ли это работать. И я использую опцию Virtual XP Windows 7 или другое программное обеспечение виртуальной машины? Я бы, вероятно, использовал WinXP в качестве виртуальной ОС.


person delegate    schedule 23.12.2010    source источник
comment
Я не понимаю проблемы - приложения x86 отлично работают на x64   -  person David Heffernan    schedule 23.12.2010
comment
у меня много 32, но приложений, которые работают на моей Windows 7 64 бит   -  person Saif al Harthi    schedule 23.12.2010
comment
Я думаю, вам лучше попытаться заставить это работать, и в случае возникновения проблемы просто опубликуйте подробности о любых ошибках, которые вы получаете. Эта проблема настолько специализирована, что это единственный способ получить хороший ответ.   -  person NotMe    schedule 23.12.2010


Ответы (4)


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

Лучшее решение — запустить приложение в 64-битной версии и посмотреть, не работает ли что-то (я уверен, что 95% будут работать), а затем вернуться сюда с конкретными вопросами.

person Shoban    schedule 23.12.2010
comment
Когда вы говорите, что запускаете приложение в 64-битной версии, я думаю, вы имеете в виду запуск 32-битной версии приложения в 64-битной Windows. - person David Heffernan; 23.12.2010
comment
Ой. Да, прости! это то, что я имею в виду. - person Shoban; 23.12.2010
comment
Ну, последовательная связь работает. У меня проблемы с частью, которая использует устройство Bluetooth, и частью с USB-джойстиком. Я думаю, проблема в том, что установленный dx_sdk включает библиотеки x64, но я пытаюсь создать приложение x86, которому нужны библиотеки x86. Может ли это быть? - person delegate; 23.12.2010
comment
Я получаю следующую ошибку System.BadImageFormatException was unhandled Message=Could not load file or Assembly 'Microsoft.DirectX.DirectInput.dll' or one of its dependencies. не является приложением Win32. (Исключение из HRESULT: 0x800700C1)... - person delegate; 23.12.2010
comment
@delegate Вполне вероятно, что если бы программа каким-то образом связывалась с 64-битной версией DX, вы бы получили такую ​​​​ошибку. У вас действительно не должно возникнуть проблем с запуском 32-битного приложения с использованием DX в 64-битной Windows - я делаю это все время. - person David Heffernan; 23.12.2010

  1. Внутри IIS (7) щелкните Пулы приложений.

  2. Найдите в списке пул приложений, настроенный для вашего веб-приложения.

  3. Выберите его, затем нажмите «Дополнительные настройки» справа.

  4. Второй параметр в списке: «Включить 32-разрядные приложения» — должно быть установлено значение «Истина».

person Per G    schedule 22.09.2015

При компиляции приложения в Visual Studio попробуйте установить целевую платформу на x86, а не на «любой ЦП» (Параметры проекта/сборка/целевая платформа).

person Liorb    schedule 23.12.2010

У меня была такая же проблема с запуском 32-битного приложения на 64-битном компьютере для разработки. В VS 2010 мне пришлось перейти в Свойства/Диспетчер конфигурации/Новый и выбрать x86. Затем я сделал чистку и восстановление, и он работал нормально.

person cdavidyoung    schedule 10.08.2012