BORHAN TEC
چهارشنبه 15 شهریور 1391, 17:12 عصر
سلام :قلب:
من یک dll را با استفاده از Qt ساخته ام که اینترفیس کلی آن به شکل زیر است:
#ifndef SCRSHOT_H
#define SCRSHOT_H
#include "scrshot_global.h"
extern "C"{
SCRSHOTSHARED_EXPORT uchar* TakeAndroidScreenShot();
}
#endif // SCRSHOT_H
و از کد بالا همانطور که مشخص است نوع خروجی تابع TakeAndroidScreenShot از نوع uchar* است. حال برای استفاده از dll بالا من از کد زیر استفاده کرده ام:
function TakeAndroidScreenShot(): PByteArray; external 'Modules\scrshot.dll';
// ...
procedure TForm3.Button2Click(Sender: TObject);
var
bStream: TBytesStream;
P: PByteArray;
i: Integer;
begin
bStream := TBytesStream.Create();
try
bStream.Write(TakeAndroidScreenShot()[0], 10); // AV Error Here (-_-)
bStream.Position := 0;
bStream.SaveToFile('c:\scr.png');
finally
bStream.Free;
end;
end;
اما در موقع اجرا با خطای AV برنامه متوقف می شود. لطفاً اگر شخصی در این زمینه تجربه ای دارد مرا راهنمایی کند.
با تشکر...
من یک dll را با استفاده از Qt ساخته ام که اینترفیس کلی آن به شکل زیر است:
#ifndef SCRSHOT_H
#define SCRSHOT_H
#include "scrshot_global.h"
extern "C"{
SCRSHOTSHARED_EXPORT uchar* TakeAndroidScreenShot();
}
#endif // SCRSHOT_H
و از کد بالا همانطور که مشخص است نوع خروجی تابع TakeAndroidScreenShot از نوع uchar* است. حال برای استفاده از dll بالا من از کد زیر استفاده کرده ام:
function TakeAndroidScreenShot(): PByteArray; external 'Modules\scrshot.dll';
// ...
procedure TForm3.Button2Click(Sender: TObject);
var
bStream: TBytesStream;
P: PByteArray;
i: Integer;
begin
bStream := TBytesStream.Create();
try
bStream.Write(TakeAndroidScreenShot()[0], 10); // AV Error Here (-_-)
bStream.Position := 0;
bStream.SaveToFile('c:\scr.png');
finally
bStream.Free;
end;
end;
اما در موقع اجرا با خطای AV برنامه متوقف می شود. لطفاً اگر شخصی در این زمینه تجربه ای دارد مرا راهنمایی کند.
با تشکر...