Как стать автором
Обновить

Использование Obj библиотек в KolibriOS в языках высокого уровня

Время на прочтение2 мин
Количество просмотров1.8K

Вступление


В KolibriOS системные библиотеки имеют формат MS COFF и расширение Obj. В этой статье будет рассказано как их импортировать и использовать в C--, GCC и TinyC.


SVN


Всегда когда делаете что либо для KolibriOS нужно иметь выкачанный SVN.


svn co svn://kolibrios.org

Он выкачается в текущую папку.


C_Layer


Для того чтобы удобно использовать библиотеки в kos32-gcc был создан C_Layer (тема на форуме, на WebSVN).


GCC


console.obj


Это просто консоль в KolibriOS. Пример загрузки и использования в SVN/contrib/sdk/samples/cpp_hello (К тому же он на С++, но можно использовать и C). Загрузка происходит в файле sys/kos_LoadConsole.h


Другие библиотеки посредством C_Layer


Перейдите в папку где у вас выкачан SVN. Далее перейдите в /contrib/C_Layer/ASM и выполните там make (чтобы оно сработало нужно иметь установленный fasm). Далее перейдите в папку /contrib/C_Layer/EXAMPLE. Там находятся пару примеров. Для компиляции соответственно тоже make.


TinyC


console.obj


Здесь все проще. В /programs/develop/ktcc/trunk/samples/consoleio.c пример использования. Здесь загрузка происходит в conio.h


Другие библиотеки


Импорт одних библиотек был сделан самодельно, для других перенесена реализация из C_Layer. Примеры использования библиотек в /programs/develop/ktcc/trunk/samples/clayer. Импорт boxlib и пример к нему писал я. Компилируются примеры скриптом для KolibriOS build_all.sh. Найти его можно и в самом iso, /kolibrios/develop/ktcc/, и на SVN. Но можно и из-под windows или linux.


C--


(Компилятор лежит в /programs/cmm/c--
c--.elf версия для linux, c--.exe для windows и c-- для KolibriOS. Если не получается компилировать, пишите в комментарии, тогда будет статья).


Несомненно в этом языке проще чем в других делать импорт библиотек.


Для начала нужно приинклудить соответствующий файл. Например для boxlib:


#include "../lib/obj/box_lib.h"

Для других библиотек соответственно. Доступные .h:


  • box_lib.h
  • libio.h
  • console.h
  • librasterworks.h
  • http.h
  • netcode.h
  • iconv.h
  • network.h
  • libimg.h
  • proc_lib.h
  • libini.h
  • xml.h

А далее нужно загрузить:


load_dll(boxlib, #box_lib_init, 0);

Последний параметр 1 для библиотек:


  • libgfx
  • libimg
  • libini
  • libio
    А для остальных библиотек 0.

Какой второй параметр, можно найти в соответствующем .h файле, или в других настоящих программах на C--.


Об неточностях и вопросах пишите в комментариях

Теги:
Хабы:
Всего голосов 10: ↑8 и ↓2+6
Комментарии3

Публикации

Истории

Работа

Программист С
46 вакансий
QT разработчик
8 вакансий
Программист C++
133 вакансии

Ближайшие события