Приложение не смогло начать правильно (0xc000007b)

У меня есть клиент / серверное приложение, которое я разрабатывал на одном ПК. Теперь ему нужны два последовательных порта, поэтому я позаимствовал ПК у друга.

Когда я создаю свое приложение и пытаюсь запустить или отладить его (будь то в Delphi IDE или из диспетчера файлов Windows), это приводит к ошибке «PATH».

Googling не много поднимает, но, по-видимому, указывает, что это не что-то особенное Delphi и происходит с другими приложениями. Кажется, это вызвано вызовом 32-битной DLL из 64-битного приложения или наоборот.

  • оба компьютера - Windows 7, 64 бит
  • оба имеют стартовую версию Delphi Xe2, которая может обрабатывать только 32 бита
  • Приложение работает отлично на моем ПК, но не на моем другом
  • Другие приложения Delphi отлично работают на обоих ПК

Может ли кто-нибудь дать мне подсказку о том, как отслеживать это?

windows,delphi,64bit,

138

Ответов: 16


120 ов принято

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


50

Невозможно разрешить зависимость времени загрузки. Самый простой способ отладить это - использовать Dependency Walker . Используйте параметр «Профиль» для получения результатов диагностики процесса загрузки. Это определит точку отказа и поможет вам найти решение.

Наиболее распространенной причиной этой ошибки является попытка загрузить 64-битную DLL в 32-битный процесс или наоборот.


12 ов

Это недостающая dll. Возможно, ваша DLL, которая работает с COM-портами, имеет нерешённую зависимость от dll. Вы можете использовать зависимый ходок и отладчик окон. Например, проверьте всю библиотеку mfc. Кроме того, вы можете использовать nrCommlib - это отличные компоненты для работы с COM-портами.


11 ов

Я попробовал все, что указано здесь, и нашел еще один ответ. Мне пришлось скомпилировать мое приложение с 32-разрядными DLL. Я построил библиотеки как в 32-битных, так и в 64-битных, но имел свой PATHнабор в 64-разрядные библиотеки. После того, как я перекомпилировал свое приложение (с рядом изменений в моем коде), я получил эту страшную ошибку и боролся в течение двух дней. Наконец, попробовав несколько других вещей, я поменял мой, чтобы иметь 32-разрядные DLL перед 64-разрядными DLL (у них одинаковые имена). И это сработало. Я просто добавляю его здесь для полноты.


6

В более ранних ответах упоминалось, что использование зависимого ходока - это путь, в моем случае (мое приложение продолжает сбой с кодом ошибки), ходок зависимостей показал несколько dll, которые НЕ актуальны!

Наконец выяснилось, что я могу выполнить профилирование, перейдя в меню «Профиль», и он запустит приложение и остановится на точной DLL, что вызывает проблему! Я узнал, что 32-битная dll была выбрана из-за пути и исправлена.

введите описание изображения здесь

окна, Дельфы, 64-битная,
Похожие вопросы