OberonCore
https://forum.oberoncore.ru/

Interface modules
https://forum.oberoncore.ru/viewtopic.php?f=29&t=549
Страница 1 из 1

Автор:  PGR [ Четверг, 05 Июль, 2007 01:03 ]
Заголовок сообщения:  Interface modules

Почему в интерфейсных модулях, используемых для связи с DLL, запрещено определение процедур?

Часто определённная в API библиотеки функция оказывается макросом на Си и в Блэкбоксе приходится использовать 2 модуля: один -- для native-функций, второй -- для макросов, реализованных в виде процедур.

Автор:  Илья Ермаков [ Четверг, 05 Июль, 2007 12:02 ]
Заголовок сообщения: 

Потому что интерфейсный модуль не компилируется в код. Из него получается только sym-файл. И присутствие интерфейсного модуля на этапе выполнения программы не требуется.

Вообще-то, это касается только "целиком интерфейсных" модулей, когда после MODULE M [] указывается DLL, к которой подключаемся.
Вообще говоря, можно этого не делать, а указывать конкретную DLL прямо после заголовка процедуры (см. "Платформенно-зависимые особенности"). Тогда один модуль может описывать точки входа в несколько DLL - и, наверное, обычные процедуры тоже.

Автор:  PGR [ Четверг, 05 Июль, 2007 13:37 ]
Заголовок сообщения: 

Интерфейсный модуль без ["dllname"] после имени модуля создать не получается... :( Может OM Inc. начали переход от "целиком интерфейсных" модулей к модулям с импортом отдельных процедур и не довели это до конца?

Автор:  Илья Ермаков [ Четверг, 05 Июль, 2007 14:58 ]
Заголовок сообщения: 

Мда, и правда - не получаецца.. :(

Я, кстати, часто использую динамическую схему:

VAR
Proc-: PROCEDURE...;

а при инициализации - Kernel.LoadDll и Kernel.ThisDllObj.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/