V
vladimirFF
Доброго всем времени суток!
При передаче указателя на блок памяти из кода на Си++ в длл-функцию, написанную на дельфи, обнаруживаю в этом блоке памяти совсем другие данные.
Есть библиотека DLL, написанная на delphi. В ней функция вида:
function sendData(<тут разные параметры>; data: Pointer): BYTE; stdcall;
begin
with TFileStream.Create('dump.dat',fmOpe nWrite) do try
write(data,wSize);
finally
free();
end;
end;
ее объявление в Си:
typedef BYTE (WINAPI *SendData)(BYTE, WORD, BYTE, void*);
и код в си:
void* data;
data = malloc(size);
//дальше в память, куда указывает data записываются данные
memcpy(data,&val,sz);
//и собственно вызов функции DLL
sendData(catId,size,objCount,data);
Проблема в следующем: то что я записываю в data в Си и то что я получаю в DLL-фнкции - совершенно разные данные. Ошибки доступа к памяти при этом не возникает.
Подскажите в чем может быть причина?
При передаче указателя на блок памяти из кода на Си++ в длл-функцию, написанную на дельфи, обнаруживаю в этом блоке памяти совсем другие данные.
Есть библиотека DLL, написанная на delphi. В ней функция вида:
function sendData(<тут разные параметры>; data: Pointer): BYTE; stdcall;
begin
with TFileStream.Create('dump.dat',fmOpe nWrite) do try
write(data,wSize);
finally
free();
end;
end;
ее объявление в Си:
typedef BYTE (WINAPI *SendData)(BYTE, WORD, BYTE, void*);
и код в си:
void* data;
data = malloc(size);
//дальше в память, куда указывает data записываются данные
memcpy(data,&val,sz);
//и собственно вызов функции DLL
sendData(catId,size,objCount,data);
Проблема в следующем: то что я записываю в data в Си и то что я получаю в DLL-фнкции - совершенно разные данные. Ошибки доступа к памяти при этом не возникает.
Подскажите в чем может быть причина?