forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   CallDLL (http://forum.boolean.name/showthread.php?t=3422)

butcher 21.05.2007 13:26

CallDLL
 
Как мне выполнить функцию( mbn(Bnumb,Nnumb,MNnumb)
) из DLL спомощью CallDLL

Черный крыс 21.05.2007 16:52

Re: CallDLL
 
CallDLL - это атавизм вчерашнего дня.
Сейчас все функции Длл-ок декларируются в файле с расширением ".decls"

HolyDel 21.05.2007 17:50

Re: CallDLL
 
params=createbank(12)
pokeint params,0,Bnumb
pokeint params,4,Nnumb
pokeint params,8,MNnumb
results=createbank(4)
CallDLL( "mydll","mbn",params,results )

чо то вроде етого.
PS:
Цитата:

CallDLL - это атавизм вчерашнего дня.
Сейчас все функции Длл-ок декларируются в файле с расширением ".decls"

jimon 21.05.2007 18:40

Re: CallDLL
 
Diablo1909
лол :-) жжош адназначна :)
без нее нельзя зделать динамическую линковку dll ... а без нее собственно не зделаеш систему плагинов :-)

butcher 21.05.2007 21:35

Я проклянаю слово bank :wallbash: !!!
Читаю функцию:
Цитата:

params=CreateBank(8)
PokeFloat params,0,1.1
PokeFloat params,1,3.2
results=CreateBank(4)
result#=CallDLL( "System\systems.dll","Bmin",params,results ) ;--"cdecl"

И он мне такие цифры выдает(1.1*3.2 = 2133345.....):crazy:

jimon 21.05.2007 21:58

Re: CallDLL
 
butcher
может все правильно но ты выводиш указатель ? :)

butcher 21.05.2007 22:00

Re: CallDLL
 
В смысле?:
Цитата:

может все правильно но ты выводиш указатель ? :)

alcoSHoLiK 21.05.2007 22:43

Re: CallDLL
 
PeekFloat(results, 0)

HolyDel 22.05.2007 01:06

Re: CallDLL
 
okeFloat params,0,1.1
PokeFloat params,1,3.2
я выделил цифры.
ето смещение в байтах от начала массива.
любой ребенок знает, что float имеет размер в 4 байта. поетому и отступ должен быть 4.
okeFloat params,0,1.1
PokeFloat params,4,3.2
так. ты переписывал первое свое число (а точнее три его младших байта)

butcher 22.05.2007 19:20

Опечатался малек :@ :
Цитата:

Код:

params=CreateBank(8)
PokeFloat params,0,1.1
PokeFloat params,4,3.2
results=CreateBank(4)
result#=CallDLL( "System\systems.dll","Bmin",params,results )


Я писал dll в Delphi вот:
Код:

library systems;
uses
  SysUtils,
  Classes;
{$R *.res}
function Bmin(num1,num2:integer):integer;  cdecl(stdcall);
begin
Result:=num2*num1;
end;
exports Bmin name 'Bmin' ;
begin
end.

Вроде все ок!!! В Game Maker все работает!!!:wallbash:

Platon 22.05.2007 20:15

Re: CallDLL
 
Так ок или не ок? :)
Если не ок, то смотри пост 8:
Результат = PeekFloat(results, 0)
т.е. нужно еще из банка вывода вытащить результат.

Да кстати, если передаешь в функцию флоат, то и в длл обьяви параметры как флоат.


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

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