Глюки при вызове DLL на С
От: KoanMu  
Дата: 04.08.05 14:14
Оценка:
Язык С:
В DLL объявлена функция:
__declspec( dllexport ) long MidiReadBytes(MIDIFILE * mf, unsigned char * buf, unsigned long count);


Язык DELPHI:

Type
PByte = ^Byte;
pMIDIFILE = ^MIDIFILE;
MIDIFILE = record
{
.... структура аналогичная структуре в С
}
end;

TMidiReadBytes = function (mf:pMIDIFILE; buf:PByte; count:Longword):Longint;cdecl;

function MyFunc(mf:pMIDIFILE);
var
i:Word;
chr: Array [0..59] of Byte;
MidiReadBytes:TMidiReadBytes;
begin
{
здесь получаем DllHandle
}

@MidiReadBytes := GetProcAddress(DllHandle,PChar('MidiReadBytes'));
i:=0;
result := MidiReadBytes(mf, @chr[i], 1);
{
!!!! после вызова функции MidiReadBytes изменилась "i"
}
end;


Что я сделал не так?
Думал, что это произошло из-за неправильного объявления вызываемой функции, но тогда бы при ее вызове происходила ошибка.
Но она не происходит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.