BORHAN TEC
پنج شنبه 16 شهریور 1391, 16:17 عصر
با عرض سلام خدمت برنامه نویسان Qt :قلب:
راستش من هنوز زیاد با Qt آشنا نیستم (البته فعلاً! :چشمک:) و به یک مشکلی برخورد کرده ام که واقعاً اعصابم رو به هم ریخته است.
مشکل من این است:
من در محیط Qt یک dll را ساخته ام و قصد دارم که از این dll در محیط Delphi استفاده کنم. همه چیز به ظاهر درست به نظر می رسد و در مثال های ساده همه چیز به خوبی کار می کند. در واقع کار این dll این است که با استفاده از یک شی از کلاس QImage کارهایی را بر روی یک تصویر انجام می دهد و در آخر هم بایتهای آن تصویر را برگشت می دهد.
کد های سمت Qt به شرح زیر است:
فایل test.h:
#ifndef TEST_H
#define TEST_H
#include "test_global.h"
extern "C"{
TESTSHARED_EXPORT const uchar* testFunc();
}
#endif // TEST_H
فایل test.cpp:
#include "test.h"
#include <QtGui>
QImage image;
const uchar* testFunc(){
image.load("c:\\1.png");
return image.constBits(); // هیچ چیزی را بر نمی گرداند
// return (uchar*)"Hello From Qt."; // به درستی کار میکند
}
در محیط دلفی هم از کد زیر برای تست dll ساخته شده در Qt استفاده کرده ام. البته کدهای سمت دلفی مشکلی ندارد و مشکل از طرف کد های سمت Qt است:
function testFunc(): PByteArray; external 'test.dll';
// ...
procedure TForm3.Button1Click(Sender: TObject);
var
bStream: TBytesStream;
P: PByteArray;
Size: Cardinal;
begin
P := testFunc;
Size := Length(PAnsiChar(P)); // AnsiChar = 1 Byte
bStream := TBytesStream.Create();
try
bStream.Write(P[0], Size); // Works Fine (^_^)
bStream.Position := 0;
bStream.SaveToFile('c:\scr.txt');
finally
bStream.Free;
end;
end;
با تشکر از پاسخ های شما دوستان عزیز...
راستش من هنوز زیاد با Qt آشنا نیستم (البته فعلاً! :چشمک:) و به یک مشکلی برخورد کرده ام که واقعاً اعصابم رو به هم ریخته است.
مشکل من این است:
من در محیط Qt یک dll را ساخته ام و قصد دارم که از این dll در محیط Delphi استفاده کنم. همه چیز به ظاهر درست به نظر می رسد و در مثال های ساده همه چیز به خوبی کار می کند. در واقع کار این dll این است که با استفاده از یک شی از کلاس QImage کارهایی را بر روی یک تصویر انجام می دهد و در آخر هم بایتهای آن تصویر را برگشت می دهد.
کد های سمت Qt به شرح زیر است:
فایل test.h:
#ifndef TEST_H
#define TEST_H
#include "test_global.h"
extern "C"{
TESTSHARED_EXPORT const uchar* testFunc();
}
#endif // TEST_H
فایل test.cpp:
#include "test.h"
#include <QtGui>
QImage image;
const uchar* testFunc(){
image.load("c:\\1.png");
return image.constBits(); // هیچ چیزی را بر نمی گرداند
// return (uchar*)"Hello From Qt."; // به درستی کار میکند
}
در محیط دلفی هم از کد زیر برای تست dll ساخته شده در Qt استفاده کرده ام. البته کدهای سمت دلفی مشکلی ندارد و مشکل از طرف کد های سمت Qt است:
function testFunc(): PByteArray; external 'test.dll';
// ...
procedure TForm3.Button1Click(Sender: TObject);
var
bStream: TBytesStream;
P: PByteArray;
Size: Cardinal;
begin
P := testFunc;
Size := Length(PAnsiChar(P)); // AnsiChar = 1 Byte
bStream := TBytesStream.Create();
try
bStream.Write(P[0], Size); // Works Fine (^_^)
bStream.Position := 0;
bStream.SaveToFile('c:\scr.txt');
finally
bStream.Free;
end;
end;
با تشکر از پاسخ های شما دوستان عزیز...