E
eclipsevl
вобщем проблема вот в чем:
в длл(исходник на делфи у меня есть) есть функция DoGetRS232Buffer
как я понял, для ее вызова нужен массив типа byte(возвращаемый этой функцией) и размер массива типа int. при написании программы на c++ я заменил byte на char. вот код вызова функции
затем вызываю ее
но функция ничего не возвращает и после закрытия программы появляется окно ошибки.
может я что-то сделал не так ?
P.S. остальные функции этой dll работают просто отлично.
в длл(исходник на делфи у меня есть) есть функция DoGetRS232Buffer
Код:
function DoGetRS232Buffer(var RS232Buffer:array of byte; var RS232BufferLength:integer):integer; stdcall export;
//;get received bytes from FIFO RS232 buffer
var
BufferLength,i:integer;
RS232BufferWriteLocal:integer;
P:^integer;
begin
BufferLength:=0;
Result:=NO_ERROR;
if RS232BufferLength>0 then
for i:=1 to RS232BufferLength do
begin
P:=@PGlobalRS232Buffer^[GlobalRS232BufferWritePos];
RS232BufferWriteLocal:=P^;
if (RS232BufferRead=RS232BufferWriteLocal) then
Break;
RS232Buffer[BufferLength]:=PGlobalRS232Buffer^[RS232BufferRead];
inc(BufferLength);
RS232BufferRead:=(RS232BufferRead+1) mod (GlobalRS232BufferEnd+1);
end;
RS232BufferLength:=BufferLength;
end;
как я понял, для ее вызова нужен массив типа byte(возвращаемый этой функцией) и размер массива типа int. при написании программы на c++ я заменил byte на char. вот код вызова функции
Код:
typedef int(WINAPI *DoGetRS232Buffer)(char *,int);
DoGetRS232Buffer GetBuff;
hUSBdll=LoadLibrary(DllName)
GetBuff=(DoGetRS232Buffer)::GetProcAddress(hUSBdll,"DoGetRS232Buffer")
затем вызываю ее
Код:
char ch[90];
a = sizeof(ch);
GetBuff(ch,a);
но функция ничего не возвращает и после закрытия программы появляется окно ошибки.
может я что-то сделал не так ?
P.S. остальные функции этой dll работают просто отлично.