Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > Библиотеки

Библиотеки Сторонние библиотеки для Blitz

Ответ
 
Опции темы
Старый 14.01.2006, 11:46   #1
kortesfil
Знающий
 
Регистрация: 16.10.2005
Сообщений: 310
Написано 7 полезных сообщений
(для 0 пользователей)
Наверно я вам задам самый глупый вопрос в вашей жизни,что такое lib и как пользоваться этими библеотеками?????
(Offline)
 
Ответить с цитированием
Старый 14.01.2006, 12:20   #2
alcosholik
 
Сообщений: n/a
В этом разделе уже достаточно топиков, можно было догадаться

Либы - это программки, написанные на самом Блице или на другом языке программирования. Они предоставляют функции, которые сложно/невозможно написать самому.

Если либа написана на Блице, то просто нужно присоединить файл с функциями либы к своей программе следующим образом:
Include "somelib.bb"
Если написана на другом языке, то нужно присоединить к проекту библиотеку (dll файл). Обычно это делается так: в папке userlibs создается decls файл, в котором пишутся объявления функций, предоставляемой библиотекой; далее открывается проект и в нем используются эти функции.
 
Ответить с цитированием
Старый 14.01.2006, 12:23   #3
kortesfil
Знающий
 
Регистрация: 16.10.2005
Сообщений: 310
Написано 7 полезных сообщений
(для 0 пользователей)
а есть сайт где много этих библиотек? написанные на blitz3d
(Offline)
 
Ответить с цитированием
Старый 14.01.2006, 14:45   #4
AsmLover
Оператор ЭВМ
 
Регистрация: 12.01.2006
Сообщений: 21
Написано 0 полезных сообщений
(для 0 пользователей)
На официальном сайте - вот здесь

lib - сокращение от английского library (библиотека). Это отлаженная часть кода, написанная тобой или кем-то еще и не требующая дополнительной модификации (или минимальную модификацию). Библиотека хранится во внешних файлах. На блитце, если библиотека написана на самом блитце, доступ осуществляется либо путем включения библиотеки путем
include "имя_файла.bb"
или через Copy / Paste нужного фрагмента кода.
Написанная на другом языке библиотека, использующая стандартные соглашения о передаче параметров и оформленная в виде DLL (динамически подключаемой библиотеки), может подключаться статически (то есть на этапе компиляции), путем объявления функций в специальном decls файле. Как это сделать написано на главном сайте Блитца (а если не демо-версия Blitz3d, то в подкаталоге Userlibs находится текстовый файл с описанием).

Библиотека не обязательно содержит функции. Фактически, в случае блитца и использования include это макроподстановка, причем, даже в цикле, она выполнится всего один раз и не требует проверок на включение в код как в С++ (типа IF #DEFINE).
(Offline)
 
Ответить с цитированием
Старый 14.01.2006, 16:12   #5
jimon
 
Сообщений: n/a
библеотека ввиде dll (win32) обязательно имеет 4 функции : подключение , отключение , подключение потока , отключение потока (как я помню)

файлы расширения lib - ето обычно библеотеки для Microsoft Visual C++... просто так их неподсойдениш
 
Ответить с цитированием
Старый 14.01.2006, 16:35   #6
kortesfil
Знающий
 
Регистрация: 16.10.2005
Сообщений: 310
Написано 7 полезных сообщений
(для 0 пользователей)
Спасибо за помощь!)
(Offline)
 
Ответить с цитированием
Старый 14.01.2006, 19:26   #7
alcosholik
 
Сообщений: n/a
Я закрепил топик, чтобы данный вопрос не повторялся в дальнейшем.
 
Ответить с цитированием
Старый 01.09.2006, 17:14   #8
Stranger
AnyKey`щик
 
Регистрация: 28.07.2006
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Re: что такое lib

А можно dll написать на VisualBasic, и если можно, то как её подключить?
(Offline)
 
Ответить с цитированием
Старый 01.09.2006, 18:50   #9
jimon
 
Сообщений: n/a
Re: что такое lib

dll можно написать
подключат также как и остальные dll
 
Ответить с цитированием
Старый 01.09.2006, 20:26   #10
Stranger
AnyKey`щик
 
Регистрация: 28.07.2006
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Re: что такое lib

Я вот сделал простую функцию в VisualBasic:
Function AdeleteB (a as Integer, b as Integer) as Integer
  AdeleteB=a/b
End Function
Сделал .decls файл, но при вызове блиц пишет:
User lib function not found
Что я сделал не так?
(Offline)
 
Ответить с цитированием
Старый 01.09.2006, 20:57   #11
НУБ
Бывалый
 
Регистрация: 22.09.2005
Сообщений: 634
Написано 36 полезных сообщений
(для 102 пользователей)
Re: что такое lib

Потому что нужно в длл предусмотреть экспорт ф-ций для блица, как это делается на ВБ - х.з., лучше бери VC++, для него тутор есть.
(Offline)
 
Ответить с цитированием
Старый 03.09.2006, 03:03   #12
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: что такое lib

Поделись тутором, плиз )
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 03.09.2006, 12:55   #13
jimon
 
Сообщений: n/a
Re: что такое lib

прямо из blitz3d :


New DLL interface spec
----------------------

There is now a directory in the root blitzpath called 'userlibs'.

By adding DLLs and '.decls' files to this directory, you can extend blitz's command set.

DLLs contain actually library code, while .decls files contain 'declarations' to be added to the
base command set. These declarations describe the functions contained in the Dll.


Format of decls files
---------------------

Decls files should always start with a '.lib' directive, followed by the quoted name of the DLL to be
loaded, eg:

.lib "mylib.dll"

Following the .lib is a list of function declarations. The syntax of these is identical to
function declarations in Blitz, with the following exceptions:

* No default parameter values are allowed.

* If no function return type is specified, the function is a 'void' function - ie: it returns nothing.

* Instead of object parameters, you can only specify 'void*' parameters using a '*' type tag. Such
parameters can be assigned ANY object or bank, so BE CAREFUL!

* A declaration may be optionally followed by a 'decorated name'. This takes the form of a ':'
followed by a quoted string denoting the decorated name, eg:

MyFunction( text$ ):"_MyFunction@4"
MessageBox%( hwnd,text$,title$,style ):"MessageBoxA"

The decorated name is the name of the function as it appears in the dll, and only needs to be
specified if it is different from the actual function name.


Writing DLLs
------------

All functions MUST use the _stdcall calling convention.

Floats are passed and returned as per standard C/C++ conventions.

Strings are passed and returned in 'C' format - ie: a pointer to a null-terminated sequence of
characters.

Returned strings must be in a 'static' memory buffer. Once the function returns, this string is
immediately copied into an internal Blitz style string, so its OK to share this buffer between
multiple functions.

Both banks and objects can be passed to functions. The value passed is the address of the first byte
of storage. No information is sent regarding the size or type of memory passed so, again, BE CAREFUL!

Neither Banks or objects can be returned from functions.

Arrays are not supported at all.

VisualC decorates symbols quite heavily! If you are coding in 'C', the necessary stdcall specifier
will cause a '_' to be prepended, and a '@' (followed by the number of bytes passed to the function
- ie: number of parameters*4) to be appended. So, something like: 'void _stdcall MyFunc( int x )'
will end up as '_MyFunc@4'. In C++, the name decoration is even messier! But you can supress it by
using the 'extern "C"' feature (see examples below) so you're just left with the 'C' stdcall mess.

Other languages such as Delphi and Purebasic don't appear to suffer from this feature, but it can be
worthwhile looking through dll symbols if you're having problems. Check out PEview at
http://www.magma.ca/~wjr Open your dll and select 'SECTION .rdata'/'EXPORT address table'
to have a look at the exported symbols your compiler has seen fit to bestow upon your dll.

Example
-------

Ok, here's a little C++ example, as it would appear in VisualC.

First, we write the DLL:

//demo.dll
//
#include <math.h>
#include <string.h>
#include <stdlib.h>

#define BBDECL extern "C" _declspec(dllexport)
#define BBCALL _stdcall

//returns a float and has 6 float parameters
BBDECL float BBCALL VecDistance( float x1,float y1,float z1,float x2,float y2,float z2 ){
float dx=x1-x2,dy=y1-y2,dz=z1-z2;
return sqrtf( dx*dx+dy*dy+dz*dz );
}

//returns a string and has one string parameter
BBDECL const char * BBCALL ShuffleString( const char *str ){
static char *_buf;

int sz=strlen(str);

delete[] _buf;
_buf=new char[ sz+1 ];
strcpy( _buf,str );

for( int k=0;k<sz;++k ){
int n=rand()%sz;
int t=_buf[k];_buf[k]=_buf[n];_buf[n]=t;
}

return _buf;
}
After building this, the resultant 'demo.dll' should be placed in the userlibs directory.

Now, we also need to create a 'demo.decls' file, describing the functions in our dll. This file
is also placed in the userlibs directory:

.lib "demo.dll"
VecDistance#( x1#,y1#,z1#,x2#,y2#,z2# ):"_VecDistance@24"
ShuffleString$( str$ ):"_ShuffleString@4"

...Voila! The next time Blitz is started up, the new commands appear within the IDE and can be used.

 
Ответить с цитированием
Старый 03.09.2006, 21:21   #14
Stranger
AnyKey`щик
 
Регистрация: 28.07.2006
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Re: что такое lib

А на C++Builder можно написать?
Если можно, то не могли бы вы помочь мне разобраться с интерфейсом? Я вот открываю си, создаю там новую dll. Слева в дереве проекта я ее выбираю, но я не вижу поля для ввода кода. Где писать сам код? (в си
никогда не работал, так что не смейтесь!)
(Offline)
 
Ответить с цитированием
Старый 03.09.2006, 21:27   #15
jimon
 
Сообщений: n/a
Re: что такое lib

imho C++Builder ето ужасное чудовище

думаю что можно там dll написать
но как именно плохо представляю
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что это такое? Diplomat Юмор 24 13.02.2009 10:48
Что такое *.daa Alex_90 Болтовня 10 14.01.2008 23:32
Что такое... pointdev Болтовня 22 15.11.2007 04:01
Что это такое? johnk PureBasic 15 28.04.2007 14:46
че такое jimon Болтовня 0 17.10.2005 19:03


Часовой пояс GMT +4, время: 03:45.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com