Moh*_*deh 4 c# delphi dll image bitmap
我在这样写的dll中有一个Delphi函数:
function LensFlare(Bitmap: TBitmap; X, Y: Int32; Brightness: Real): TBitmap; StdCall;
Begin
// ...
Result := Bitmap;
End;
Run Code Online (Sandbox Code Playgroud)
我想在C#中使用它,我试过这个但是我没有成功:
[DllImport("ImageProcessor")]
static extern Bitmap LensFlare(Bitmap bitmap, int x, int y, double Brightness);
private void button1_Click(object sender, EventArgs e)
{
Bitmap b = new Bitmap(@"d:\a.bmp");
pictureBox1.Image = LensFlare(b, 100, 100, 50); // Error!
}
Run Code Online (Sandbox Code Playgroud)
错误:"尝试读取或写入受保护的内存.这通常表示其他内存已损坏."
我怎样才能做到这一点?
你不能使用这个功能.除非你使用软件包,否则在两个Delphi模块之间使用它甚至都不安全.你不能像这样在模块边界传递本机Delphi类.
您需要切换到互操作友好类型.显而易见的选择是使用HBITMAP.您需要修改Delphi库.如果您没有源,则需要联系原始开发人员.
| 归档时间: |
|
| 查看次数: |
454 次 |
| 最近记录: |