Исключение System.OverflowException если запускаю из Visual Studio - C#
Формулировка задачи:
Здравствуйте, тут такое дело, подключил либу AForge.Video.VFW для записи видео.
Компилирую, нажимаю "Запись", выдает исключение System.OverflowException. Если программу запускать не из под Visual Studio, а просто exe из папки то все ок, запись идет. В чем может быть проблема? Я так понимаю какая-то проблема с разрядностью, но не понимаю почему.. ведь просто из папки exe запускается как надо. Да и менял я на х86 и на х64, не помогает..
Код ошибки под спойлером
Bitmap bmp = Properties.Resources.image;
...
writer.AddFrame(bmp); public void AddFrame( Bitmap frameImage )
{
lock (sync)
{
// check if AVI file was properly opened
if (buffer == IntPtr.Zero)
throw new System.IO.IOException("AVI file should be successfully opened before writing.");
// check image dimension
if ((frameImage.Width != width) || (frameImage.Height != height))
throw new ArgumentException("Bitmap size must be of the same as video size, which was specified on opening video file.");
// lock bitmap data
BitmapData imageData = frameImage.LockBits(
new Rectangle(0, 0, width, height),
ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
// copy image data
int srcStride = imageData.Stride;
int dstStride = stride;
int src = imageData.Scan0.ToInt32() + srcStride * (height - 1); //ОШИБКА ЗДЕСЬ!!!
int dst = buffer.ToInt32();
for (int y = 0; y < height; y++)
{
Win32.memcpy(dst, src, dstStride);
dst += dstStride;
src -= srcStride;
}
// unlock bitmap data
frameImage.UnlockBits(imageData);
// write to stream
if (Win32.AVIStreamWrite(streamCompressed, position, 1, buffer,
stride * height, 0, IntPtr.Zero, IntPtr.Zero) != 0)
throw new VideoException("Failed adding frame.");
position++;
}
} int src = imageData.Scan0.ToInt32() + srcStride * (height - 1);Решение задачи: «Исключение System.OverflowException если запускаю из Visual Studio»
textual
Листинг программы
IntPtr src = imageData.Scan0 + srcStride * (height - 1);