请问各位大侠,Delphi如何通过DLL传递Stream?
做一个软件,因为里面有的函数需要经常更新,所以把函数封装在了一个DLL里面
其中有一个函数是图像处理的,定义如下:
function GetScreen: TMemoryStream; stdcall; //流文件里面是一张图片
函数没有问题,只是在调用的时候,根本调用不到数据,调用如下:
type
TGetScreen = function :TMemoryStream;stdcall;
var
GetScreen : TGetScreen;
h:THandle;
m:TJPEGImage;
begin
m := TJPEGImage.Create;
h := LoadLibrary('SysRun.dll');
if h = 0 then Exit;
@GetScreen :=GetProcAddress(h,'GetScreen');
m.LoadFromStream(GetScreen);
Image1.Picture.Assign(m);
FreeLibrary(h);
end;
当然,还有其他方法可以实现,比如另存为图片后通过返回文件路径进行调用,但是我就是想试试能不能将Stream直接作为DLL返回参数调用?请大牛们不吝指教。
[解决办法]
调用的主程序开辟内存空间,再做一个入参给DLL
传出接收后再释放,就可以了。
[解决办法]
如果跨语言,传出stream没有意义