你有遇到过这种问题吗? 同样的一个过程,为什么在主程中能顺利执行?而在DLL中就提示错误呢?(50分)

  • 主题发起人 主题发起人 qutwah
  • 开始时间 开始时间
Q

qutwah

Unregistered / Unconfirmed
GUEST, unregistred user!
Bitmap保存成Jpeg文件<br>Procedure SaveFile(Bitmap:TBitmap;filepath:pchar);<br>var<br> &nbsp;jpeg:Tjpegimage;<br>begin<br> &nbsp; Jpegimage := TJpegImage.Create;<br> &nbsp; &nbsp;try &nbsp; <br> &nbsp; &nbsp; &nbsp;JpegImage.Assign(Bitmap);<br> &nbsp; &nbsp; &nbsp;JpegImage.SaveToFile(filepath);<br> &nbsp; &nbsp;finally<br> &nbsp; &nbsp; &nbsp;JpegImage.Free;<br> &nbsp; &nbsp;end;<br>end;<br>该过程在主程序中可以顺利保存文件,而放到DLL中时,主程序调用出现错误提示:<br>Canon assign a TBitmap to a TJPEGImage?这是什么原因?
 
是不是哪个库没有初始化啊<br>DLL中很多东西都要手工初始化的
 
似乎在DLL里<br>对于对象的操作有特定要求<br>不能直接传
 
dll中没有TJPEGImage所在的单元吧
 
Jpegimage := TJpegImage.Create;问题可能出在这里,改成传一个TJpegImage类参数进去看看,不要在DLL中创建。
 
同意楼上的
 
除了外面传Tjpegimage进去的方法外,各位还有其它高见吗?
 
dll导出函数要设计的通用些,不要在入口参数写delphi特有的类。当然TBitMap还是比较通用的。好的做法是给一个待转文件路径和输出文件路径。<br>因为类引用的关系所以你要在Project中加上Sharemem
 
Rainstorey說的很在理啊。
 
后退
顶部