PlaySound работает в Visual Studio, но не в автономном
Я пытаюсь воспроизвести файл WAV в C++ с помощью Visual Studio. Я помещаю файл "my.wav" в каталог моего проекта и использую код
PlaySound(TEXT("my.wav"), NULL, SND_FILENAME | SND_SYNC);
Я нажимаю кнопку воспроизведения (или F5 или даже Ctrl-F5), и он воспроизводит звук отлично.
Я открываю командную строку и захожу в Debug/ и запускаю MyApp.exe, и при запуске проигрывает сообщение об ошибке.
Примечание: в идеале звук должен быть включен в исполняемый файл, поэтому я могу просто распространять исполняемый файл, и он будет работать. Я пытался поместить его в Resource.rc, но код, который я вижу во всех примерах
PlaySound( (char*)IDR_WAVE1, NULL, SND_RESOURCE | SND_SYNC );
даже не компилируется для меня. Жалуется на IDR_WAVE1, хотя это имя моего ресурса.
2 ответа
Я немного заржавел на старой школе win32, но это было примерно так:
включите resource.h в ваш файл и используйте MAKEINTRESOURCE
PlaySound(MAKEINTRESOURCE(IDR_WAVE1), NULL, SND_RESOURCE | SND_SYNC );
Насколько я помню, вам нужно "связать" файл ресурсов с файлом сценария ресурса ".rc file" в Visual Studio, чтобы встроить его в файл.exe. В противном случае вам нужно загрузить его, как указывает @wilx.