0
我在C这个功能++,我想在C#C++到C#DLL导入ReadImage
BS_RET_CODE BS_ReadImage(int handle, int imageType, unsigned char* bitmapImage, int* imageLen)
我已经试过
[DllImport("BS_SDK.dll",CharSet = CharSet.Ansi, EntryPoint = "BS_ReadImage")]
public static extern int BS_ReadImage(int handle, int imageType, IntPtr bitmapImage, ref int imageLen);
IntPtr image = new IntPtr();
int len = 0;
BSSDK.BS_ReadImage(m_Handle, 0xff, image, ref len);
byte[] _imageTemp = new byte[len];
Marshal.Copy(image, _imageTemp, 0, len);
导入,但我得到一个访问冲突异常
它必须将图像读入东西。这肯定是你应该作为* bitmapImage *属性传递的缓冲区。改为一个字节[]。 – 2013-04-03 21:56:34
I解决了它 [DllImport(“BS_SDK.dll”,CharSet = CharSet.Ansi,EntryPoint =“BS_ReadImage”)] public static extern int BS_ReadImage(int handle,int imageType,byte [] bitmapImage,ref int imageLen) ; byte [] image = new byte [84022]; int len = 0; BSSDK.BS_ReadImage(m_Handle,255,image,ref len); 位图b =新的位图(Image.FromStream(new System.IO.MemoryStream(image))); b。保存(@“C:\ temp \ image.jpg”); – user2167504 2013-04-03 22:04:06
但我不知道如何我应该使用imageLen保留内存,如果我不知道它,直到我打电话BS_ReadImage,我设置图像字节[]大尺寸,然后我看着imageLen设置字节[ ]与适当的大小 – user2167504 2013-04-03 22:06:07