SWIG FB wrapper. конвертируем заголовочные файлы языка си, в заголовочные файлы FreeBasic.
Участников: 2
Страница 1 из 1
SWIG FB wrapper. конвертируем заголовочные файлы языка си, в заголовочные файлы FreeBasic.
бывает так, что нам уж очень хочется поюзать какую-нибудь библиотеку. ну, о черт! заголовки к ней есть только на языке си, а мне ох как неохото ручками переписывать заголовочные файлы. да и время не всегда найдется. напомощь может прийти 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
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
Возраст : 43
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург
Re: SWIG FB wrapper. конвертируем заголовочные файлы языка си, в заголовочные файлы FreeBasic.
Ухты!!!
Мощная весч, незнал про такую, подумывал уже сам писать, и как всегда оказалось, что все необходимое давно уже есть.
Мощная весч, незнал про такую, подумывал уже сам писать, и как всегда оказалось, что все необходимое давно уже есть.
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|