返回信息流C#调用Delphi写成的DLL时报错,报的错误是“尝试读取或写入的内存损坏”,DLL中有调用TImage组件,已经查出来是传入的参数在TImage加载时出错,具体代码如下:
Delphi代码:
function bmp_convert_emf(n: String): Boolean;
var
m : TmetaFile;
mc : TmetaFileCanvas;
b : tbitmap;
Image1: TImage;
Image2: TImage;
begin
m := TMetaFile.Create;
//ShowMessage('你输入的是'+Edit1.Text);
Image1.Picture.LoadFromFile(n);
try
b := TBitmap.create;
try
b.Assign(Image1.Picture.Bitmap);
//获取源位图
m.Height := b.Height;
m.Width := b.Width;
//设置转换后emf文件大小
mc := TMetafileCanvas.Create(m, 0);
//创建画布
try
mc.Draw(0, 0, b);
//关键!通过画图实现转换
finally
mc.Free;
end;
finally
b.Free;
end;
Image2.Picture.Assign(m);
//显示转换结果
finally
m.Free;
end;
Image2.Picture.SaveToFile('tmp.emf');
Result := True;
end;
C#代码如下:
[DllImport("Test3.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern Boolean bmp_convert_emf(ref StringBuilder n);
static void Main(string[] args)
{
Boolean n=true;
//string m = "";w
StringBuilder m1 =new StringBuilder( "D:\\1.bmp");
n = bmp_convert_emf(ref m1);
Console.WriteLine("nnnn"+n);
}
哪位高手能帮着解决一下,不胜感激啊!!!!!!!!!!!!
这是一条镜像帖。来源:北邮人论坛 / soft-design / #41215同步于 2011/9/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
求助:C#调用Delphi写成的DLL时报错
xueming125
2011/9/28镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复