Я думаю, довольно ясно, что в вашей программе есть ошибка. Если вы не знаете, с чего начать, полезной техникой является «разделяй и властвуй».
Начните с вашей программы в состоянии, когда вы можете вызвать исключение. Удалите половину кода и попробуйте снова. Если исключение по-прежнему происходит, то у вас есть вдвое меньше кода для просмотра. Если исключение не происходит, возможно, оно связано с только что удаленным кодом.
Повторяйте вышеупомянутое, пока вы не изолируете проблему.
Обновление : Вы говорите "на этом этапе программа ничего не делает", но ясно, что что-то делает (иначе это не приведет к сбою). Является ли ваша программа программой консольного режима? Если да, то какую функцию вы используете для ожидания ввода пользователя? Если нет, то это программа с графическим интерфейсом? Вы открыли диалоговое окно и ждете, чтобы что-то произошло? Есть ли у вас запущенные таймеры Windows? Любые темы?
Обновление 2 : в свете небольшого фрагмента кода, который вы опубликовали, я уверен, что если вы попытаетесь удалить вызов функции playSongPtr(songHandle)
, ваша проблема, скорее всего, исчезнет далеко. Вам нужно будет выяснить, какие требования предъявляются к "miniFMOD.dll". Например, эта DLL может предполагать, что она работает в среде с графическим интерфейсом вместо консольной программы, и может выполнять действия, которые не обязательно работают в режиме консоли. Кроме того, чтобы сделать что-либо в фоновом режиме (включая воспроизведение песни), этой DLL, вероятно, необходимо создать поток, чтобы периодически загружать следующий бит песни и ставить его в очередь в буфере воспроизведения. Вы можете проверить количество потоков, создаваемых вашей программой, в диспетчере задач (или, лучше, в Process Explorer). Если их больше одного, то происходят другие вещи, которые вы не контролируете напрямую.