QMediaPlayer крашит код
Qt 6.4.2
При работе с QMediaPlayer или QAudioOutput приложение при запуске крашится к сообщением "Process finished with exit code -1073741515 (0xC0000135)"
Из-за чего происходит ошибка и как этого избежать?
#include <QApplication>
#include <QWidget>
#include <QtMultimedia/QMediaPlayer>
#include <QtMultimedia/QAudioOutput>
#include <QUrl>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QWidget widget(nullptr);
auto player = new QMediaPlayer(&widget);
auto audioOutput = new QAudioOutput(&widget);
player->setAudioOutput(audioOutput);
player->setSource(QUrl::fromLocalFile("..//Oxy.mp3"));
audioOutput->setVolume(50);
player->play ();
widget.resize(200, 100);
widget.show();
return QApplication::exec();
}
Ответы (2 шт):
инклюды вида #include <QtMultimedia/QMediaPlayer> намекают что QtMultimedia не подключена.
Для qmake в .pro файле это будет строчка типа
QT += multimedia
А для cmake вроде как что-то типа (но это не точно)
find_package(Qt5Multimedia REQUIRED)
И инклюды у вас будут без путей #include <QMediaPlayer>
Оказалось, что вся проблема в том, что CLion не мог найти bin Qt и вообще работать с шестой его версией
После того, как я загуглил ошибку, посоветовали в настройках проекта выставить путь к bin Qt, после чего мне стало выдавать ошибку:
could not load multimedia backend ""
QtMultimedia is not currently supported on this platform or compiler.
Так что я перенёс весь код в чистый проект Qt и данный код стал работать.
main.cpp
#include <QApplication>
#include <QWidget>
#include <QMediaPlayer>
#include <QAudioOutput>
#include <QUrl>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QWidget widget(nullptr);
auto *player = new QMediaPlayer(&widget);
auto *audioOutput = new QAudioOutput(&widget);
player->setAudioOutput(audioOutput);
player->setSource(QUrl::fromLocalFile("..//Audio1//Oxy.mp3"));
audioOutput->setVolume(100);
player->play ();
widget.resize(200, 100);
widget.show();
return QApplication::exec();
}
CMakeList.txt
cmake_minimum_required(VERSION 3.5)
project(Audio1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 COMPONENTS
Core
Gui
Widgets
Multimedia
REQUIRED)
add_executable(Audio1 main.cpp)
target_link_libraries(Audio1
Qt::Core
Qt::Gui
Qt::Widgets
Qt::Multimedia
)
install(TARGETS Audio1
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
Надеюсь, кому-нибудь помог, если что, поправляйте.