Я разрабатываю приложение на машине Win7 x64.
Есть некоторый код, который вызывает внешний файл .dll. Файл .dll был создан для 32-разрядных машин. Проблема, с которой я сталкиваюсь, заключается в том, что при запуске приложения в отладчике в конфигурации Debug
оно работает нормально. Как только я переключаюсь на Release
, любой вход в метод, который вызывает вызов .dll, завершается с ошибкой
An unhandled exception of type 'System.BadImageFormatException' occurred in MyCool.exe
Additional information: is not a valid Win32 application. (Exception from HRESULT: 0x800700C1)
Конфигурации Release
и Debug
одинаковы, и приложение создается для x86. Эта проблема возникает только на компьютерах с Windows 7. У наших клиентов, использующих XP, нет проблем. Правда, у нас нет клиентов, использующих XP x64, поэтому я не смог это проверить.
Вот изображение моих конфигураций решения:
Я изменил параметр Platform:
на все возможные комбинации, но он все еще не работает. Есть ли что-то скрытое в конфигурации Debug
?
EDIT: я понял это, но я действительно не понимаю проблемы.
На вкладке Build
каждого проекта в свойствах проекта (вкладка Compile
для проектов VB) я должен установить Target CPU
на x86 вместо AnyCPU.
Может быть, это для другого вопроса, но: Почему? В чем разница между настройкой платформы всего решения на x86 и настройкой целевого ЦП на x86 для каждого проекта. Кроме того, на изображении выше: для чего тогда поле Platform
??