SDL2_Mixer: Mix_Init не нужен для статически связанных аудио библиотек? - PullRequest
0 голосов
/ 01 сентября 2018

Я занимаюсь разработкой программы с использованием SDL2 (и всех библиотек расширений). Конечно, одной из этих библиотек является SDL_Mixer v2.0.2.

При использовании SDL_Mixer во всех примерах и руководствах используется функция Mix_Init (вместе с последующим Mix_Quit в конце программы). Насколько я понимаю, это загружает динамические библиотеки, такие как ogg, mpg123 и т. Д. Однако я статически связал все библиотеки в исполняемый файл (как SDL_Mixer, так и все аудио библиотеки).

Значит ли это, что мне не нужно звонить Mix_Init? Я спрашиваю об этом, потому что функция всегда возвращает неправильные флаги (что означает, что она не загружается). Даже если это не удается или я даже не называю это с самого начала, я все равно могу воспроизводить .mp3, .flac и все другие аудиоформаты.

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

1 Ответ

0 голосов
/ 08 сентября 2018

Значит ли это, что мне не нужно вызывать Mix_Init?

Я бы не стал этого делать и продолжал бы звонить Mix_Init.

Одна из этих библиотек, конечно же, SDL_Mixer v2.0.2. [...] Я спрашиваю это, потому что функция всегда возвращает неправильные флаги (что означает, что она не смогла загрузить)

К сожалению, это известная ошибка в SDL Mixer v2.0.2, и у меня было много проблем, прежде чем я осознал это некоторое время назад.
Ошибка вполне понятна, и это еще один способ сказать, что Mix_Init возвращает неправильные флаги:

Mix_Init всегда возвращает 0 - поддерживаемые музыкальные интерфейсы не найдены

На самом деле это не значит, что ему не удалось что-то загрузить, и вы сами это заметили:

Даже если это не удается или я даже не называю это для начала, я все еще могу воспроизводить .mp3, .flac и все другие аудиоформаты.

...