Не удается воспроизвести аудио с SFML, связанным со STATI C - PullRequest
1 голос
/ 10 марта 2020

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

 buf.loadFromFile("data\pong.wav");
 Sound sound;
 sound.setBuffer(buf);

Компилятор даже не запустит игру и выдаст мне эти ошибки, я использую SFML 2.5.1 после компиляции это для Visual Studio 2019, который я использую.

1>------ Build started: Project: Project1, Configuration: Debug x64 ------
1>Source.cpp
1>C:\Users\Ahmad.T\source\repos\Project1\Project1\Source.cpp(69,19): warning C4129: 'p': unrecognized character escape sequence
1>C:\Users\Ahmad.T\source\repos\Project1\Project1\Source.cpp(133,19): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data
1>C:\Users\Ahmad.T\source\repos\Project1\Project1\Source.cpp(137,20): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data
1>C:\Users\Ahmad.T\source\repos\Project1\Project1\Source.cpp(141,20): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data
1>C:\Users\Ahmad.T\source\repos\Project1\Project1\Source.cpp(151,19): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data
1>C:\Users\Ahmad.T\source\repos\Project1\Project1\Source.cpp(155,20): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data
1>C:\Users\Ahmad.T\source\repos\Project1\Project1\Source.cpp(159,20): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data
1>C:\Users\Ahmad.T\source\repos\Project1\Project1\Source.cpp(164,21): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data
1>C:\Users\Ahmad.T\source\repos\Project1\Project1\Source.cpp(164,13): warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data
1>flac.lib(stream_decoder.obj) : error LNK2019: unresolved external symbol __iob_func referenced in function FLAC__stream_decoder_reset
1>flac.lib(stream_encoder.obj) : error LNK2001: unresolved external symbol __iob_func
1>flac.lib(win_utf8_io.obj) : error LNK2001: unresolved external symbol __iob_func
1>flac.lib(bitreader.obj) : error LNK2019: unresolved external symbol fprintf referenced in function FLAC__bitreader_dump
1>flac.lib(bitwriter.obj) : error LNK2001: unresolved external symbol fprintf
1>flac.lib(win_utf8_io.obj) : error LNK2019: unresolved external symbol vsnprintf_s referenced in function local_vsnprintf
1>MSVCRTD.lib(vsnprintf_s.obj) : error LNK2001: unresolved external symbol vsnprintf_s
1>MSVCRTD.lib(vsnprintf_s.obj) : error LNK2001: unresolved external symbol _vsnprintf_s
1>C:\Users\Ahmad.T\source\repos\Project1\x64\Debug\Project1.exe : fatal error LNK1120: 4 unresolved externals
1>Done building project "Project1.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Вот библиотеки, которые связаны с проектом:

flac.lib
opengl32.lib
openal32.lib
freetype.lib
winmm.lib
gdi32.lib
vorbisenc.lib
vorbisfile.lib
vorbis.lib
ogg.lib
ws2_32.lib
sfml-graphics-s-d.lib
sfml-window-s-d.lib
sfml-system-s-d.lib
sfml-audio-s-d.lib
sfml-network-s-d.lib

Если вам нужно больше взглянуть на код, я буду при необходимости включите его в комментарий.

1 Ответ

0 голосов
/ 11 марта 2020

Я думаю, что вы использовали не тот компилятор. Поскольку SFML зависит от большого количества базовых библиотек (fla c .lib - только один пример ..). Эти библиотеки являются частью загрузки. Однако эти библиотеки должны использоваться с тем же компилятором, который они создали.

Именно поэтому SFML предлагает Загрузки для различных версий Visual Studio.

Между версиями Microsoft изменила определения заголовков, так что теперь функции определены не так, как в поставляемых библиотеках (в основном файлы заголовков, измененные между различными версиями Visual Studio).

Вы можете добиться успеха,

  • используя legacy_stdio_definitions.lib для решения проблем
  • перекомпилируйте все зависимости в вашем текущем компиляторе (или найдите их для загрузки)
  • вернуться к поддерживаемой Visual Studio 2015

См. этот ответ для аналогичной проблемы

...