У меня возникла странная проблема при кодировании программы OpenGl с C++ в Visual Studio Express 2010.
Я использую: Windows 7 64bit, OpenGl 4.x
не Мой партнер использует: Windows XP 32bit, Visual Studio Express 2010, OpenGl 2.x
Ошибка при необработанном исключении первой случайности на Win7 64bit (без проблем на XP 32bit, Linux 64bit)
До сих пор мы просто нарисовали вершины для наших моделей и она отлично работает на обеих системах (я знаю, я знаю: устарели, но мы все еще новички). Теперь он включил lib для импорта 3d-сеток и создания анимации. Для него все отлично работает, но я получаю
Исключение из первого шанса в 0x0055f838 в Ant Simulation.exe: 0xC0000005: Место для обнаружения нарушения доступа 0x00bb0000.
Необработанное исключение в 0x0055f838 в Ant Simulation.exe: 0xC0000005: Место для обнаружения нарушения доступа 0x00bb0000.
С отладчиком я проследил проблему к линии
glDrawArrays (GL_QUADS, 0, n_data);
Я попытался установить код, но ничего не запускается. Как ни странно, вчера я мог пройти эту линию 2-3 раза с отладчиком, пока он не разбился, сегодня он падает напрямую. Вчера я проверил, что n_data одинаково каждый раз. Если я запускаю * .exe в Windows, он сбой (код ошибки ниже). Когда мой партнер отправляет мне свой * .exe, он обычно не работает, но один раз я мог бы начать его. Я воспроизвел ошибку в других окнах. Мы пробовали на Linux 64bit, и проблем нет. Я попытался запустить его в режиме совместимости, но проблема остается неизменной (все еще происходит сбой).
Я искал вокруг и нашел это:
https://blogs.msdn.com/b/debugger/archive/2010/05/12/visual-studio-debugger-fails-to-catch-unhandled-exception-for-a-windows-form-or-wpf-application.aspx?Redirected=true
Не уверен, что если я это правильно понял. Есть исключение, которое я не могу поймать, но которое убьет приложение, но почему у другой системы не проблема с этим исключением?
Я попытался решить его так, как описано в ссылке, но, похоже, в VS Express у меня нет меню, чтобы бросать исключения с первым шансом. Я постараюсь получить VS 2012, но, тем не менее, мне хотелось бы знать: это загадочная вещь Windows или может быть проблема с моим кодом, которая вызывает сбой (как это предлагается в одном из комментариев в ссылке)? Я также высоко ценю экспликации за то, что на самом деле происходит ...
Я получаю ошибку, когда я бегу * .exe:
Имя события проблемы: APPCRASH
Имя приложения: Ant Simulation.exe
Версия приложения: 0.0.0.0
Применение Отметка: 511d99a3
Fault Module Name: StackHash_0a9e
Версия модуля ошибки: 0.0.0.0
Fault Модуль Отметка: 00000000
Код исключения: c0000005
Exception Offset: 0037f278
OS Версия: 6.1.7601.2.1.0.256.48
Locale ID: 1031
Дополнительная информация 1: 0a9e
Дополнительная информация 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительная информация 3: 0a9e
Дополнительная информация 4: 0a9e372d3b4ad19135b953a78882e789
Спасибо за быстрый ответ. Я ищу его. Если я найду это, я дам отзывы. До сих пор, когда я загружаю только статическое изображение, оно работает, что является показателем правильности вашей догадки. – Andarin
-1, если предположить, что это ошибка OpenGL, а не OP. Это похоже на явное переполнение кучи, и гораздо БОЛЕЕ, скорее всего, в коде OPs, чем в проверенных кодом и относительно стабильных библиотеках OpenGL. – SecurityMatt
Я не говорю, что это ошибка OpenGL, и даже конкретная реализация GL. Это обычное явление для нарушения предварительных условий OpenGL (это ошибка приложения), что приводит к сбою в вызове OpenGL. Пропуск неверного указателя на функцию GL является наиболее очевидным способом достижения этого, но есть более тонкие. Я отредактирую ответ, чтобы сделать это более ясным. –