forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Опять длл (http://forum.boolean.name/showthread.php?t=4688)

butcher 08.10.2007 10:25

Опять длл
 
Я делаю игру в жанре РПГ и хачу вычислительные функции, а в том числе и Волновой,Обходной алгоритмы поместить в длл
Вот скрин: Скрин_22
Вот простая либа с одной функцией(написана в Delphi)+.decls:DLL
Немог бы кто-нибуть написать примерчик как через calldll вынуть функции в Blitz3D?

H@NON 08.10.2007 11:43

Re: Опять длл
 
Вот статья как сделать длл на пурике и подключиьь ее к блитцу. Учись.
http://madmedic.by.ru/art02.htm

IGR 08.10.2007 11:48

Re: Опять длл
 
если есть decls, то calldll не нвдо !!

butcher 08.10.2007 12:06

Re: Опять длл
 
Мне надо вызвать функцию через CallDLL, а не как либу через .decls файл!!!

IGR 08.10.2007 12:11

Re: Опять длл
 
зачем ??
юзай decls !!

сергей 10.11.2007 17:04

Re: Опять длл
 
а гдепурик взять ?

jimon 10.11.2007 17:21

Re: Опять длл
 
сергей
посмотри в соответствующем разделе на етом форуме

devolonter 10.11.2007 17:49

Re: Опять длл
 
Вот реальный код из моей либы Может поможет...
код С++:
[blitz]extern "C" __declspec(dllexport) int WinApi_RegReadValue(const void *in,int in_size,void *out,int out_sz)
{
HKEY root = *(HKEY *)in;
HKEY hKey;
DWORD nSize= 0x256;
in = (int *)in+1;
int len_subkey = *(int *)in;
in = (int *)in+1;
int len_key = *(int *)in;
in = (int *)in+1;
char subkey[256];
char key[256];
char value[256];
ZeroMemory(&value, sizeof(value));
ZeroMemory(&key, sizeof(key));
ZeroMemory(&subkey, sizeof(subkey));
for (int i=0; i<len_subkey+1; i++)
{
subkey[i] = *(char *)in;
in = (char *)in+sizeof(char);
}
for (i=0; i<len_key+1; i++)
{
key[i] = *(char *)in;
in = (char *)in+sizeof(char);
}
if (RegOpenKeyEx(root,subkey,0,KEY_READ,&hKey)) return 0;
if (RegQueryValueEx(hKey,key,0,0,(LPBYTE)value,&nSize )) return 0;
for (i=0; i<256; i++)
{
(*(char *)out) = value[i];
out = (char *)out+sizeof(char);
}
if (RegCloseKey (hKey)) return 0;
return 1;
}[/blitz]

А вот код блица:
[blitz]Function bRegGetValue$(root, subkey$, key$)
Local blitzwinapi_result$, blitzwinapi_bankIn, blitzwinapi_bankOut
blitzwinapi_bankIn = CreateBank (12+Len(subkey)+Len(key)+2)
PokeInt (blitzwinapi_bankIn,0,root)
PokeInt (blitzwinapi_bankIn,4,Len(subkey))
PokeInt (blitzwinapi_bankIn,8,Len(key))
PokeString (blitzwinapi_bankIn,subkey,12)
PokeString (blitzwinapi_bankIn,key,12+Len(subkey)+1)
blitzwinapi_bankOut = CreateBank (256)
CallDLL (BWA_DLL_NAME,"WinApi_RegReadValue",blitzwinapi_ba nkIn,blitzwinapi_bankOut)
blitzwinapi_result = PeekString(blitzwinapi_bankOut,0)
FreeBank (blitzwinapi_bankIn)
FreeBank (blitzwinapi_bankOut)
Return blitzwinapi_result
End Function[/blitz]


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot