Я пытаюсь создать Gcko 2.0-совместимую DLL в Delphi.
Ранее (pre-Gecko 2.0) DLL необходимо было экспортировать функцию NSGetModule(). Это работало безупречно.
Начиная с Firefox 4, моя DLL загружается (я проверил это, хотя точка останова в разделе инициализации), но моя функция NSGetModule() больше не вызвана. Это спроектированное поведение, поскольку, начиная с Gecko 2.0 (Firefox 4), двоичный компонент не должен экспортировать функцию NSGetModule():
https://developer.mozilla.org/en/XPCOM/XPCOM_changes_in_Gecko_2.0#Binary_components
В соответствии с этими документами моей DLL необходимо экспортировать символ данных NSModule, который указывает на структуру. В терминологии Delphi я предполагаю, что это глобальная переменная, которая указывает на запись Delphi.
В С++ вы экспортируете (глобальный) символ данных:
define NSMODULE_DEFN(_name) extern "C" NS_EXPORT mozilla::Module const *const NSModule
Мой вопрос: как это сделать в Delphi? Как экспортировать глобальную переменную?
Я ценю ваши отзывы.