Не удается установить пакет времени разработки: отсутствует @ Classes @ TStream @ Записать $ qqrpxvi из vcl50.bpl - PullRequest
1 голос
/ 08 мая 2019

Короткая версия

  • Мой пакет времени разработки не может установить
  • , поскольку моя библиотека времени выполнения библиотека пакетов bpl
  • требуется экспорт @Classes@TStream@Write$qqrpxvi из vcl50.bpl
  • , который не существует

Длинная версия

При попытке установить design-пакет time , Delphi 5 получает ошибку загрузчика:

enter image description here

Точка входа в процедуру @ Classes @ TStream @ Write $ qqrpxvi моглане находиться в библиотеке динамических ссылок c: \ program files (x86) \ borland \ delphi5 \ Projects \ Bpl \ AvatarDateTimePickerD5.bpl.

После очистки диалогового окна, отображаемого загрузчиком, Delphi показывает собственную версию этой же ошибки:

enter image description here

Итак, я проверяю файл

Я использую Зависит , чтобы проверить экспорт в dll:

c:\program files (x86)\borland\delphi5\Projects\Bpl\AvatarDateTimePickerD5.bpl

И, конечно же, есть нет экспорт с именем:

@Classes@TStream@Write@qqrpxvi

На самом деле экспорт не начинается с @ Classes вообще :

enter image description here

Убедитесь, что он загружает правильный

Поэтому я использую Process Monitor , чтобы убедиться, что он читает правильный файл.И это:

enter image description here

Итак, проверьте сборку во время выполнения

Как вы помните, обычно есть два пакета:

  • ContosoGrobberD5 : время выполнения
  • ContosoGrobberD5D : время разработки

В данном случае это пакет времени разработки , который загружает свою зависимость от пакета времени выполнения :

AvatarDateTimePicker D5 .bpl

Итак, я загружу ранее сгенерированный run-time пакет, чтобы посмотреть, как он собирается, и он собирается без инцидентов:

enter image description here

и записывает в ожидаемое местоположение.И он выполняет все операции записи в файл:

enter image description here

enter image description here

Это успешно, правильно,и намеренно, не генерируя экспорт DLL с именем:

@Classes@TStream@Write@qqrpxvi

Но соответствующий пакет design-time утверждает, что ему нужен такой импорт.

Зависит говорит, что не совсем

Если я запускаю Зависит от времени разработки bpl, я вижу сбойную цепочку:

  • AvatarDateTimePickerD5D.bpl (время разработки dll)
    • AvatarDateTimePickerD5.bpl (время выполнения dll)
    • vcl50.bpl
      • Отсутствует экспорт : @Classes@TStream@Read$qqrpvi
      • Отсутствует экспорт : @Classes@TStream@Write$qqrpxvi

enter image description here

Итак, очевидно, что vcl50.bpl не хватает для экспорта

Проверьте vcl50.bpl для экспорта @ Classes @ TStream @ Write

Так что я наблюдаю за операцией на Insвысокий пакет времени разработки , и после некоторой охоты он находит его в пути:

enter image description here

В папке "System32" :

C: \ Windows \ SysWOW64 \ vcl50.bpl

Поэтому я проверяю экспорт vcl50.bpl.И это правильно, нет экспорта @Classes@TStream@Write$______:

enter image description here

И это выглядит как файл:

enter image description here

Создано : 1/24/2000 4:01 SHA-1 : 29398F5CD966335EB38377962B12780DDEA9DBDC

Так что же происходит?

...