Один раз произошел сбой SDL_Mixer; теперь все программы, использующие SDL_Mixer, аварийно завершают работу при инициализации

Я просматривал это руководство по аудио с помощью SDL_mixer, и все прошло отлично.

После этого я решил экспериментировать, играть и учиться путем исследования, поэтому я сделал программу, которая была очень похожа, имела два звуковых канала и позволяла мне воспроизводить музыку из видеоигр и нажимать кнопки для воспроизведения звуковых эффектов игры.

Затем я начал развлекаться и нажимать кнопки, просто чтобы быть глупым и проверить программу. Я начал нажимать несколько кнопок очень быстро, а затем, проделав это примерно 5 секунд, программа неожиданно закрылась.

С той даты, примерно 2 месяца назад, я не смог запустить что-либо на своем компьютере, который использует SDL_mixer. Я пытался создавать новые проекты с помощью SDL_mixer, я повторно загрузил все SDL и SDL_mixer и даже спросил этот вопрос на форумах sdl.

Я нахожусь в той точке, когда собираюсь переформатировать весь свой компьютер, чтобы он снова заработал, что НЕ нормально. Библиотека расширений никогда не должна принуждать кого-либо к переформатированию, особенно если это проблема, которая потенциально может быть передана конечным пользователям, которые загружают и используют программу позже.

Я использую 64-разрядную версию Windows 7; Microsoft Visual Studio 2012 Professional; С++; и SDL 1.x

Кроме того, если кто-нибудь знает, что не так, как я могу это исправить, чтобы это не повторилось, и безопасно использовать звук, чтобы не вызывать проблем на компьютере пользователя?

Строка, которую я использовал для инициализации микшера, приведена ниже:

//Initialize SDL_mixer 
if( Mix_OpenAudio( 22050, MIX_DEFAULT_FORMAT, 2, 4096 ) == -1 ) 
{ 
    return false; 
}

Строки выплевываются отладчиком после того, как я запускаю программу и она тут же закрывается:

'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\SDL_Tutorial11.exe'. Symbols loaded. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\SDL.dll'. Module was built without symbols. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\advapi32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcrt.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sechost.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\sspicli.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cryptbase.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\gdi32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\user32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\lpk.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\usp10.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\winmm.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\SDL_image.dll'. Module was built without symbols. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\SDL_ttf.dll'. Module was built without symbols. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\libfreetype-6.dll'. Module was built without symbols. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\zlib1.dll'. Module was built without symbols. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\SDL_mixer.dll'. Module was built without symbols. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp110.dll'. Symbols loaded. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr110.dll'. Symbols loaded. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\imm32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msctf.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ddraw.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dciman32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\setupapi.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\oleaut32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ole32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\devobj.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dwmapi.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\ddraw.dll' 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\dwmapi.dll' 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\setupapi.dll' 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\devobj.dll' 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\oleaut32.dll' 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\ole32.dll' 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\cfgmgr32.dll' 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\dciman32.dll' 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\uxtheme.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dwmapi.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KBDUS.DLL'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\KBDUS.DLL' 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KBDUS.DLL'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\KBDUS.DLL' 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dsound.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ole32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\powrprof.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\setupapi.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\oleaut32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\devobj.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\dinput.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\hid.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wintrust.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\crypt32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msasn1.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ole32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\ole32.dll' 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ole32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Unloaded 'C:\Windows\SysWOW64\ole32.dll' 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\clbcatq.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\MMDevAPI.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\propsys.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\shlwapi.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\AudioSes.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\libmikmod-2.dll'. Module was built without symbols. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\wdmaud.drv'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ksuser.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\avrt.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msacm32.drv'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msacm32.dll'. Cannot find or open the PDB file. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Windows\SysWOW64\midimap.dll'. Cannot find or open the PDB file. 
The thread 0x5b8 has exited with code 0 (0x0). 
The thread 0x1d2c has exited with code 0 (0x0). 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\libpng15-15.dll'. Module was built without symbols. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\libvorbisfile-3.dll'. Module was built without symbols. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\libvorbis-0.dll'. Module was built without symbols. 
'SDL_Tutorial11.exe' (Win32): Loaded 'C:\Users\Rayne\Documents\Visual Studio 11\Projects\SDL_Tutorial11\Debug\libogg-0.dll'. Module was built without symbols. 
The thread 0x1a1c has exited with code 0 (0x0). 
The thread 0x1fbc has exited with code 0 (0x0). 
The thread 0x3f8 has exited with code 0 (0x0). 
The thread 0x584 has exited with code 0 (0x0). 
The thread 0xa98 has exited with code 0 (0x0). 
The thread 0x182c has exited with code 1 (0x1). 
The thread 0x1d1c has exited with code 1 (0x1). 
The thread 0x1278 has exited with code 1 (0x1). 
The thread 0x1d28 has exited with code 1 (0x1). 
The thread 0x1ca0 has exited with code 1 (0x1). 
The thread 0x1844 has exited with code 1 (0x1). 
The thread 0x1340 has exited with code 1 (0x1). 
The thread 0x6e8 has exited with code 1 (0x1). 
The thread 0x2008 has exited with code 1 (0x1). 
The program '[4852] SDL_Tutorial11.exe' has exited with code 1 (0x1).

P.S. Есть ли более простой способ обозначить большие участки кода без необходимости вручную копировать 4 пробела перед каждой строкой? Это заняло некоторое время ._.;


person Rayne    schedule 19.12.2012    source источник
comment
Что касается отступов фрагментов кода, на панели инструментов окна редактирования есть кнопка, похожая на две фигурные скобки {}, выберите текст, для которого вы хотите сделать отступ, и нажмите эту кнопку.   -  person Some programmer dude    schedule 19.12.2012
comment
Большое спасибо!~ Я уверен, что это спасет жизнь!~   -  person Rayne    schedule 19.12.2012
comment
Если вы поместите точку останова в строку 195 (bool quit = false;, первая строка без комментариев в строке main()), она сработает?   -  person genpfault    schedule 20.12.2012
comment
Да! ~ Так и есть. И, о боже, БОЛЬШОЕ СПАСИБО!!!!~ Так как я смог поставить там точку останова, я смог успешно отладить свою программу, И ЭТО РАБОТАЛО!!!~ Большое вам спасибо!!!~ До сих пор я не удалось заставить работать какие-либо точки останова, программа завершалась до того, как она прерывалась для отладки, но это ОДНО место работало и позволяло мне отлаживать и устранять проблему. Чего я, однако, НЕ ПОНИМАЮ, так это того, что ДРУГИЕ программы, использующие SDL_mixer, которые ДОЛЖНЫ были работать, также давали сбой и имели ту же проблему.   -  person Rayne    schedule 20.12.2012
comment
Что оказалось проблемой?   -  person genpfault    schedule 20.12.2012


Ответы (1)


Благодаря совету genpfault я смог найти способ исправить это.

Оказывается, решение заключалось в том, что, когда программа вылетала из-за перегруженных звуковых каналов, из-за того, что звуки должны были активироваться нажатием клавиш, нажатия клавиш в очереди добавлялись в исходный код программы< /strong>, поскольку Visual Studio автоматически захватывает «фокус окна» после сбоя и «отлавливает» лишние символы.

Символы просто были добавлены к строковому литералу одной из первых строк проверки ошибок для функций SDL_mixer в самом начале программы, поэтому это не вызывало синтаксических ошибок для компилятора; строка проверки ошибок просто говорила: «Нет, загруженный файл не соответствует этой строке точно, поэтому закройте программу», что привело к выходу программы до того, как мои точки останова смогли зарегистрироваться и позволить мне отлаживать.

наконец-то решить эту проблему — настоящее облегчение.

Спасибо, genpffault и stack-overflow!~

person Rayne    schedule 19.12.2012
comment
Ахахах! ~ Я понял это только благодаря твоему совету. Я ставил точки останова ДО этой точки и ПОСЛЕ этой точки, но никогда - в этой точке раньше, и эта точка действительно сработала. У меня еще не было знаний или опыта, чтобы понять это, поскольку я все еще новичок, но благодаря вашему совету я усвоил ценный урок. Так что спасибо :D - person Rayne; 20.12.2012