Камера не найдена при запуске приложения из общей папкиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Камера не найдена при запуске приложения из общей папки

Сообщение Anonymous »

У меня проблемы с доступом к камерам, если мое приложение расположено в общей папке.
Когда я запускаю приложение локально, оно показывает камеру, но когда то же приложение запускается в общей папке, камера пропадает.
Я проверил разрешения Windows и ничего не нашел. Брандмауэры и антивирусы отключены. Общий ресурс находится в том же домене, и я получаю к нему доступ от того же пользователя, что и локально.
Кто-нибудь знает, как это исправить? установка локально невозможна.

Код: Выделить всё

    QString txt("");

QCameraPermission cameraPermission;

txt += "-------------------\n";
switch (qApp->checkPermission(cameraPermission))
{
case Qt::PermissionStatus::Granted:
txt += "Camera permission already granted. Starting camera...\n";
//startCamera(); // Your function to initialize and use the camera
break;
case Qt::PermissionStatus::Denied:
txt += "Camera permission denied. Cannot start camera.\n";
// Show a message to the user
break;
case Qt::PermissionStatus::Undetermined:
txt += "Camera permission is undetermined. Requesting now...\n";
// Request permission, passing 'this' and the slot for the callback
//qApp->requestPermission(cameraPermission, this, &CameraWidget::permissionGranted);
break;
}

txt += "-------------------\n\n";

const QList audioDevices = QMediaDevices::audioInputs();
for (const QAudioDevice &device : audioDevices)
{
txt += "-------------------\n";
txt += "ID: " + device.id() + "\n";
txt += "Description: " + device.description() + "\n";
txt += (QString)"Is default: " + (device.isDefault() ? "Yes" : "No") + "\n";
txt += "-------------------\n";
}

txt += "\n";

const QList videoDevices = QMediaDevices::videoInputs();
for (const QCameraDevice &device : videoDevices)
{
txt += "-------------------\n";
txt += "ID: " + device.id() + "\n";
txt += "Description: " + device.description() + "\n";
txt += (QString)"Is default: " + (device.isDefault() ? "Yes" : "No") + "\n";
txt += "-------------------\n";
}

QMessageBox msgBox;
msgBox.setWindowTitle("Fatal error");
msgBox.setText(txt);
msgBox.setInformativeText("Shutting down!");
msgBox.setIcon(QMessageBox::Critical);
msgBox.setStandardButtons(QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Cancel);
return msgBox.exec();
Сообщение об ошибке:
Изображение

Работа в Windows 11 и использование Qt6.9.1 с Visual Studio 2022
Обновить 22-01-2026
Я обнаружил, что для работы "multimedia/windowsmediaplugin.dll" должен находиться в локальной системе.
Я сделал это, создав в локальной системе папку со следующими файлами:
  • "platforms/qwindows.dll"
  • "multimedia/windowsmediaplugin.dll"
  • application.exe
Затем создал ярлык для файла application.exe и установил рабочий каталог в общую папку (в которой также есть эти файлы и другие зависимости).
Теперь это работает, но когда я удалю файл "multimedia/windowsmediaplugin.dll" из локальной папки, он будет перестаньте работать.
Я попытался разместить «multimedia/windowsmediaplugin.dll» на общем ресурсе с необходимыми библиотеками Windows. Но это не помогло.
Изображение


Подробнее здесь: https://stackoverflow.com/questions/798 ... red-folder
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»