Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Delphi5中向包装好的c#dll发送位图_C#_Delphi_Dll_Bitmap_Wrapper - Fatal编程技术网

在Delphi5中向包装好的c#dll发送位图

在Delphi5中向包装好的c#dll发送位图,c#,delphi,dll,bitmap,wrapper,C#,Delphi,Dll,Bitmap,Wrapper,我使用Delphi5。我们需要使用不提供COM互操作性的库与第三方硬件进行通信。经过一点研究;我为库制作了一个包装器,能够加载它并使用in-out软件。(感谢有类似问题的其他成员) 除了一个电话之外,一切都正常。它接收位图并将其添加到收据对象以进行打印 public void ReceiptAddImageLine(Bitmap imgImage) { recReceipt.addLine(new ReceiptImageLine(imgImage)); } (C

我使用Delphi5。我们需要使用不提供COM互操作性的库与第三方硬件进行通信。经过一点研究;我为库制作了一个包装器,能够加载它并使用in-out软件。(感谢有类似问题的其他成员)

除了一个电话之外,一切都正常。它接收位图并将其添加到收据对象以进行打印

public void ReceiptAddImageLine(Bitmap imgImage)
    {
        recReceipt.addLine(new ReceiptImageLine(imgImage));
    } (C# wrapper)
调用该过程并传递TBitmap时,在尝试编译时出现以下错误:

“[错误]repreceipt.pas(2461):不兼容的类型:“_Bitmap”和“TBitmap”

以下是实际通话:

prPrinter.ReceiptAddImageLine(qriCode.Picture.Bitmap); (Delphi 5 call)
如前所述,所有其他包装过程调用都可以正常工作,没有任何问题。我知道这可能只是一个简单的类型转换错误,但我似乎无法找到我做错了什么以及如何解决这个问题

我正在以库类型加载dll


提前感谢您的帮助

当然,您不能期望C#
位图
与Delphi
TBitmap
二进制兼容?您需要传递一个
HBITMAP
。在Delphi端,使用
ReleaseHandle
获取
HBITMAP
。在C侧,它将是
Image.FromHbitmap
。出于互操作的目的,它是
IntPtr
,从
图像的签名可以明显看出。从hbitmap
。很难解释为什么我真的期望这样,却从未看到明显的错误。这很有道理。谢谢你,大卫。