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"] после имени модуля создать не получается... ![]() |
Автор: | Илья Ермаков [ Четверг, 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/ |