gpt4 book ai didi

c# - 如何将位图传递给 Delphi 在 C# 中编写的 dll?

转载 作者:太空狗 更新时间:2023-10-30 00:29:52 25 4
gpt4 key购买 nike

我在这样的 dll 中有一个 Delphi 函数:

       function LensFlare(Bitmap: TBitmap; X, Y: Int32; Brightness: Real): TBitmap; StdCall;
Begin
// ...
Result := Bitmap;
End;

我想在 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!
}

错误:“试图读取或写入 protected 内存。这通常表明其他内存已损坏。”

我该怎么做?

最佳答案

您不能使用此功能。除非您使用包,否则在两个 Delphi 模块之间使用甚至是不安全的。您不能像那样跨模块边界传递 native Delphi 类。

您需要切换到互操作友好的类型。显而易见的选择是使用 HBITMAP。您将需要修改 Delphi 库。如果您没有源代码,则需要联系原始开发人员。

关于c# - 如何将位图传递给 Delphi 在 C# 中编写的 dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46101335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com