В модуле
HTMLHelpViewer со времени его появления в Delphi 2005 и до выхода Update 4 для Delphi XE2 была ошибка, не позволяющая использовать этот модуль в DLL. Ошибка состоит в том, что в секции
finalization
всегда выполняется вызов
HtmlHelp(HH_CLOSE_ALL)
, что может приводить к загрузке библиотеки
HHCTRL.OCX
. Для обычного приложения это не страшно, просто теряется немного времени на загрузку-выгрузку библиотеки. Но если мы пишем DLL (например, COM-объект или плагин для другого приложения), то выполнение секции
finalization
будет происходить внутри
DllMain, и попытка загрузить
HHCTRL.OCX
приведет либо к зависанию приложения, либо к ошибке Access Violation (в зависимости от версии Windows).