32-разрядное приложение не удалось запустить на x64 Win2003 из-за - PullRequest
0 голосов
/ 29 мая 2009

Вот моя проблема:

Я разработал приложение, которое можно запускать на различных платформах, включая Windows и Unix. Это приложение хорошо работает на чистом Win32 box (WinXP) или на чистом Win64 (Win2K3 x64 edition) и других Unix-платформах.

Сбой возможен только при работе на 64-битной Win2K3 в 32-битном режиме. Это приложение вызывает стороннюю DLL во время выполнения. И dll сторонних разработчиков формально не установлены, а просто скопированы в то же место. Я также уверен, что у меня правильная версия этих сторонних библиотек (я имею в виду 32-битную версию для 32-битного режима). Даже если я вручную установил «путь» в этом окне тестирования, он все равно не работает. Приложение скомпилировано и встроено в 32-битный режим в этой коробке Win2K3.

Я запускаю средство обхода зависимостей и вижу ту же ошибку. Не могу найти эту стороннюю dll.

Может кто-нибудь пролить свет на это? Как сделать так, чтобы сторонний путь dll был виден моему приложению или системе?

Ответы [ 2 ]

1 голос
/ 29 мая 2009

Я бы предложил вам сделать следующее:

  • убедитесь, что вы используете 32-разрядный версия проблемной DLL с 32-битным приложением
  • используйте filemon, чтобы увидеть, какие пути ваши приложение пытается при загрузке DLL
  • проверьте, работает ли он, если вы разместите эта DLL в один из этих путей
  • использовать средство обхода зависимостей с этой DLL сам по себе - это может иметь свои собственные неразрешенные Зависимости
0 голосов
/ 31 мая 2009

WOW64 перенаправляет все вызовы 32-разрядных приложений в папку System32 в папку SysWOW64. Есть ли сторонняя DLL в папке system32? Поскольку папка system32, вопреки ожиданиям, в Windows x64 содержит ТОЛЬКО 64-битные библиотеки DLL.

...