Comments 16
Разработка на русском языке? Сразу в топку, это ж вырвиглаз уровня 1С. Должно быть нативным по бекграунду, а не вот это вот.
Создаём проект консольное приложение в Visual Studio.
Для исчезновения консоли с отображения на экране после запуска проекта SFML вносим дополнительные настройки
Создаём точку входа: mainCRTStartup
копируем файл openal32.dll из папки SFML-2.6.1\bin в папку Windows\System32
С такими инструкциями и враги не нужны
Спасибо за комментарий
Давайте я немного поясню,
Можно было сразу создать не консольное приложение ("пустой проект" с вашего же скриншота), тогда не пришлось бы переключать /SUBSYSTEM:WINDOWS
Да, в этом случае точкой входа была бы функция WinMain() а не main(), но вы всё равно принудительно выставляете mainCRTStartup, так что ни чего бы не изменилось.
mainCRTStartup нужен был бы для кроссплатформенного приложения, которое должно начинаться именно с main(), но проект для VisualStudio - то есть, изначально не переносимый (был бы переносимый - был бы на CMake, к примеру)
Копировать любые библиотеки пуками в Windows\System32 нельзя, во-первых, в современных Windows это должна быть другая папка Windows\WinSxS или Windows\WOW, не помню точно, а Windows под рукой в данный момент проверить нет. Во-вторых, это потенциально может сломать другое приложение, которое случайно "найдёт" вашу версию openal32.dll вместо нужной этому приложению. Читать что такое dll hell.
Если SFML собирается как static, то где в настройках проекта переключение vc runtime на static, что бы не таскать за собой vcredist?
Из всего этого можно сделать вывод, что у вам нужно хорошенько подучить Visual Studio, тогда статьи будут корректными и без "ошибок новичка" ;)
Положить либы в lib, хидеры в include, мне кажется - это слишком очевидно для статьи на Хабре.
А почему нельзя просто:
vcpkg --triplet=x64-windows-static install sfml
Лучше CMake (presets) + VCPKG + любая IDE с поддержкой CMake
Не всегда корректная установка библиотеки, приходится дорабатывать ручками.
Что именно некорректно? Если нашли проблему, то можно завести тикет в майкрософтовском репозитории vcpkg. Но для вашего случая там делаются проверки на работоспособность сборки.
Мне кажется, что тут скорее всего вы неправильно библиотеки в проект подключаете :)
Не у всех и не всегда получается, но спасибо за комментарий !
Да не за что. Но вы даёте странные утверждения по несколько раз и не приводите конкретные примеры. Обычно такое бывает, когда люди не владеют теми системами сборки, которыми пользуются. Вот я и повторюсь - vcpkg собирает всё что нужно в корректно настроенном окружении. Если не у всех работает, то с очень большой вероятностью это локальная проблема, а не проблема vcpkg
Актуальна ли в настоящее время такая настройка проекта? Почему не используется тот же CMake? Ведь при разработке часто требуется больше библиотек (Box2D, ImGui, LDtk loader или парсер для tiled, ecs framework и т.д.), и настройка всего этого через проект Visual Studio может превратиться в настоящий ад. Кроме того, здесь существует проблема с кроссплатформенностью как для игрока, так и для разработчика.
Пяток строчек на CMake и готово, а не вот это всё)))
Как настроить библиотеку SFML C++ в Visual Studio 2022: статическая компоновка