SWIG FB wrapper. конвертируем заголовочные файлы языка си, в заголовочные файлы FreeBasic.

Предыдущая тема Следующая тема Перейти вниз

SWIG FB wrapper. конвертируем заголовочные файлы языка си, в заголовочные файлы FreeBasic.

Сообщение  electrik в Ср Сен 30, 2009 9:46 pm

бывает так, что нам уж очень хочется поюзать какую-нибудь библиотеку. ну, о черт! заголовки к ней есть только на языке си, а мне ох как неохото ручками переписывать заголовочные файлы. да и время не всегда найдется. напомощь может прийти swig.
http://swig.org
что такое swig? Simplified Wrapper and Interface Generator.
но опять проблема, он не умеет конвертировать заголовки под FreeBasic. оказывается, умеет. пошарившись на официальном форуме, я нашел swig fb wrapper.
http://www.freebasic.net/temp/swig_fb.zip,
под swig, можно писать модули, вот они и написали. конечно не все он умеет, но заголовочные файлы от библиотеки Fmod3.75 swig пережевал.
мы, когда открываем какой-нибудь заголовочный файл видим следующее
'' zlib -- header translated with help of SWIG FB wrapper
заголовок транслирован с помощью swig fb wrapper.
через swig прошло много, а значит, его можно использовать. конечно же, если вы захотите сконвертировать какие-нибудь сложные микрософтовские заголовки из состава .net, будут сплошные ошибки. если же заголовок написан под язык си, ненагружен всякими классами, или то чего нельзя написать на FreeBasic, скорее всего, все получится.
обратите внимание, вложенные типы, переиминовываются для того, чтоб было понятно что во что вложено. хотя мне это не понравилось. приведу пример:

переименованный тип:

[code]
type BE_CONFIG
dwConfig as DWORD
format as BE_CONFIG__NESTED__format
end type

type PBE_CONFIG as BE_CONFIG ptr

union BE_CONFIG__NESTED__format
aac as BE_CONFIG__NESTED__format__NESTED__aac
LHV1 as BE_CONFIG__NESTED__format__NESTED__LHV1
mp3 as BE_CONFIG__NESTED__format__NESTED__mp3
end union
/code]

так как должно быть после правки ручками:

[code]
type BE_CONFIG
dwConfig as DWORD
format as FORMAT
end type

type PBE_CONFIG as BE_CONFIG ptr

union format
aac as AAC
LHV1 as LHV1
mp3 as mp3
end union
[/code]

пример использования:
swig -module freebasic.cxx BladeMP3EncDLL.h
swig -callconv stdcall -module freebasic.cxx BladeMP3EncDLL.h
в первом случае, функции будут определены как cdecl, а во втором как stdcall. вы точно должны знать, что делаете, FreeBasic модуль не умеет этого отличать. по-умолчанию установлен cdecl.
в архиве есть readme, на английском, там написано чего не умеет модуль. посмотрите: swig -help, или зайдите:
http://swig.org

electrik

Сообщения : 391
Дата регистрации : 2008-09-02
Возраст : 37
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: SWIG FB wrapper. конвертируем заголовочные файлы языка си, в заголовочные файлы FreeBasic.

Сообщение  tux в Чт Окт 01, 2009 2:38 am

Ухты!!!
Мощная весч, незнал про такую, подумывал уже сам писать, и как всегда оказалось, что все необходимое давно уже есть.
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения