какой из них лучше всего использовать в Delphi, т.е. использовать пакет или DLL - PullRequest
0 голосов
/ 11 ноября 2010

Я хотел бы использовать .dll с приложением delphi, но мне интересно, является ли пакет delphi более гибким, чем DLL?

Ответы [ 3 ]

1 голос
/ 12 ноября 2010

Вы можете прочитать эту статью в моем блоге: " DLL, статическая и динамическая загрузка BPL и пакеты во время выполнения ";Он написан на испанском, но вы можете попробовать автоматический перевод (в правой части страницы).

В основном BPL является расширением DLL.Это DLL с некоторыми добавлениями.

(ПОЗИТИВНО) Если вы используете BPL, вы можете делать больше вещей с DLL.Больше силы.Вы можете использовать RTTI (вы должны создать свое приложение с пакетом времени выполнения для доступа к RTTI).

(ОТРИЦАТЕЛЬНЫЙ) Если вы используете BPL с большей мощностью, вы можете использовать его только с Delphi, но не с другими языками.

Если вы уверены, что используете его только с Deplhi, я думаю, что вы должны использовать BPL.Примеры поиска о RTTI, RegisterClasses, методе GetClass, LoadPackage (для динамической загрузки), ...

С уважением.

Извините меня за плохой английскийЭто не мой естественный язык.

1 голос
/ 11 ноября 2010

Не зная точно, что вы имеете в виду, и полагая, что вы новичок (поэтому я могу пропустить некоторые специализированные аспекты), и подразумевая, что вы знаете, что такое DLL:

Первой и главной причиной создания пакета является создание компонента времени разработки.

Вы можете делать абсолютно все (ну ... почти ...), что пакет делает так же хорошо с библиотеками DLL - за исключением вещей времени разработки.

Кроме того, вы можете упаковать несколько скомпилированных пакетов в одну библиотеку пакетов Borland (файл BPL) без учета функций времени разработки. Если вы думаете, что развертывание и связывание во время выполнения одного BPL лучше, чем различные библиотеки DLL, сделайте это. Основная цель - поддержка времени разработки.

0 голосов
/ 12 ноября 2010

Пакеты - это специальные библиотеки DLL, которые могут экспортировать классы, в то время как библиотеки DLL могут экспортировать только функции. Да, вы можете написать функцию DLL, которая создает экземпляр данного класса, но вы не можете использовать класс, объявленный в DLL (возможно, если не использовать некоторые хаки), в то время как вы можете использовать класс, объявленный в пакете напрямую. Пакеты «знают» об объектной архитектуре Delphi, а библиотеки DLL - нет. С другой стороны, библиотеки DLL могут использоваться на любом языке, который может их использовать, а пакеты зависят от Delphi.

...