Привет!
Да, я понял, что код для Kolibri генерит tccmeos.c. Но правкой в нем дело не ограничится. Таблица импорта используется другая, ее обработка идет с конца через кучу промежуточных указателей, кроме того сама таблица размазана по всему файлу, имена библиотек зачем то задаются с магическими символами + флаг загрузки и с полным путем. Все это занимает слишком много места в образе и чрезвычайно не оптимально. Сам код загрузчика прикручен гайками к dll.inc, не используя его по прямому назначению. Все что нужно было сделать - это построить правильную таблицу импорта (см. ниже) и скормить ее Dll.Load, он всю работу сам делает. Соответственно, загрузчик крайне неоптимальный (например на каждой функции вызывается load_library, который постоянно проверяет не загружена ли библиотека). Я понимаю, что все это работает, но dll.inc (и соответственно dll.obj) использует совершенно другой более компактный формат таблицы импорта (хотя и его можно уменьшить). В текущем виде это не сможет использоваться с dll.obj, нужно приводить таблицу импорта к формату, который задается макросами library и import из файла macros.inc.
Code:
...
include '../../macros.inc'
...
align 4
; Import table
@IMPORT:
library foo_lib, 'foo.obj'
import foo_lib, \
foo_bar1, 'foo_bar1', \
foo_bar2, 'foo2'
Также я пытался вчера понять, как строится таблица импорта. Как я понял импорты генерятся не ktcc, т.е. он ничего про импорты не знает. Похоже на какие то танцы с бубном.
Расскажи поподробнее как происходит сборка приложения.