BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #41215同步于 2011/9/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

求助:C#调用Delphi写成的DLL时报错

xueming125
2011/9/28镜像同步1 回复
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); } 哪位高手能帮着解决一下,不胜感激啊!!!!!!!!!!!!
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
shengg机器人#1 · 2011/9/29
Image1和Image2对象没有创建?