Delphi DLL, созданная из родительского для вызывающего приложения - PullRequest
2 голосов
/ 20 августа 2010

У меня есть приложение, которое я вызываю функцию DLL, которая создает и возвращает форму. Я получаю кучу ошибок, когда пытаюсь связать эту новую форму с основной формой приложения.

Это распространенная ошибка / проблема или в этом случае нет проблем с воспитанием детей.

И, насколько я знаю, форма, созданная в вызове DLL, не принадлежит приложению. Есть ли способ сделать вновь созданную форму принадлежащей приложению.

Спасибо, Тим

Ответы [ 3 ]

2 голосов
/ 26 августа 2010

скомпилируйте вашу dll и exe с той же версией компилятора delphi с теми же пакетами времени выполнения.
также в dll не используйте никакие соглашения о вызовах, такие как stdcall или cdecl, в вашей функции создания форм.
это будетработать как шарм.

2 голосов
/ 21 августа 2010

Не используйте VCL внутри DLL. Таким образом вы столкнетесь со всеми видами проблем. Если вам абсолютно необходимы динамические пакеты, которые создают компоненты VCL или другие части графического интерфейса, используйте, например, BPL. Вот краткое изложение обоих:

  1. BPL против DLL
  2. Вопрос переполнения стека

Есть и другие подходы. Теперь главный вопрос: почему вы создаете форму внутри DLL и действительно ли это нужно?

1 голос
/ 21 августа 2010

Ваши dll и exe должны быть скомпилированы в одной и той же версии RAD Studio, и оба должны использовать пакеты времени выполнения.

...