Исключение 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5