У меня проблема с запуском приложения С# (WPF,.Net 4.0, Visual Studio 2010), предназначенного для x64 и использующего 64-разрядную DLL (сторонняя сторона).
Проблема возникает, когда я запускаю 64-битную версию с 64-разрядной dll (на 64-битной версии Win7/WindowsServer2003). Приложение начнет нормально. Но когда я нажимаю кнопку запуска в приложении, где приложение создает поток и начинает взаимодействовать с dll, поток вылетает/останавливается при первом вызове функции dll. Ниже приведена ошибка, когда я закрываю приложение.
Подпись задачи:
Проблема Название события: APPCRASH
Название приложения: DelayServer.exe
Версия приложения: 1.0.0.0
Временная метка приложения: 52092104
Имя модуля неисправности: KERNELBASE.dll
Версия модуля неисправности: 6.1.7601.17965
Временная метка: 506dcae6
Код исключения: e0434352
Смещение смещения: 000000000000bccd
Версия ОС: 6.1.7601.2.1.0.272.7
Идентификатор локали: 2057
Дополнительная информация 1: 7315
Дополнительная информация 2:
73159f4fb34892aabcc4ba245f14f64eДополнительная информация 3: d5ec
Дополнительная информация 4:
d5ec134b8e354c23783e48c0e2e572da
Я понимаю, что это возможно, если между EXE и DLL существует несоответствие, то есть EXE - 32-битная, а DLL - 64 бит или наоборот. Прилагается скриншот моих настроек. Я не нашел способ проверить/изменить настройки платформы x64.
x64 Снимок экрана настроек проекта
Мой компьютер разработки - Win Vista 32bit, и я установил 64-битные компиляторы.
У меня 32-битное целевое приложение, использующее 32-битную DLL, работающую нормально на 32-битных comupters. Сбой происходит, когда я запускаю 64-битное целевое приложение с 64-разрядной DLL на 64-битном компьютере
Я пробовал dependencywalker, но я не могу объяснить дальше, чтобы найти какие-либо зависимости.
Может кто-то, пожалуйста, помогите мне с этим.
Много спасибо Сэму
Я, наконец, решил проблему.
Когда я использовал средство диагностики отладки Microsoft (с http://www.microsoft.com/en-gb/download/details.aspx?id=26798), дамп сбоя показывает, что есть проблема с загрузкой моей внешней DLL или ее зависимостей. Затем я загрузил свою внешнюю dll в Dependency Walker (http://dependencywalker.com/), что показывает, что он не может найти зависимость msvcp100.dll, которая связана с Microsoft VC++.
Поэтому я установил Microsoft повторно распространяемый пакет (x64), и мое приложение больше не разбивается.
Спасибо всем за вашу помощь...