Question what does it exactly mean to Reconfigure Qt and how do I do that after installing a library?
Context: As I am learning to develop applications in Qt, I keep running into a similar problem with a few different libraries, so I am asking a more general question because I think there is a pattern here that I am not understanding. However, I provide a particular example:
I want to use a USB camera view in my application. I have import QtMultimedia 5.0
in my qml file and created a camera widget based on a Qt-Creator example. When I go to run the application, I see the following error in application output:
[WARN | default] defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.camera" [:0]
[WARN | default] defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer" [:0]
And the camera view does not work (black screen). When I google this error I see a lot of thread that suggest installing a library and then reconfiguring Qt, for example as was suggested in this bug report.
I have two different development machines, one with a binary install of Qt and Qt Creator and on the other one I build Qt from source.
答案 0 :(得分:2)
重新配置Qt意味着重建Qt,因为配置是构建Qt的第一步。
Qt的设计使您可以(并且通常会!)在同一台计算机上,在不同的安装文件夹中并行安装多个版本。它们都将使用相同的来源构建。例如。 (在Unix上),在你可能安装了gstreamer的开发包后,你必须按如下方式构建:
cd ~
mkdir Qt
wget https://download.qt.io/official_releases/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.xz
tar -xf qt-everywhere-opensource-src-5.7.0.tar.xz
每个配置都在自己的一组构建/安装文件夹中构建:
mkdir 5.7.0-shared-build
mkdir 5.7.0-shared
cd 5.7.0-shared-build
../qt-everywhere-opensource-src-5.7.0/configure -prefix ../5.7.0-shared \
-opensource -confirm-license -debug-and-release -gstreamer
gmake -j8 && gmake -j8 install && echo OK
cd ..
mkdir 5.7.0-static-build
mkdir 5.7.0-static
cd 5.7.0-static-build
../qt-everywhere-opensource-src-5.7.0/configure -prefix ../5.7.0-static \
-opensource -confirm-license -debug-and-release -static -gstreamer
gmake -j8 && gmake -j8 install && echo OK
cd ..
gmake的-j
参数值应设置为计算机上的逻辑CPU核心数。
答案 1 :(得分:1)
It sounds as if you need a Qt Plugin for the web camera and media player. The Qt Application cannot find those plugins (note, they're specifically compiled for use with Qt and with a specific version of Qt).
In QT C++, I would use the function QCoreApplication::addLibraryPath(const QString&), documented here: http://doc.qt.io/qt-5/qcoreapplication.html#addLibraryPath
I wouldn't call the above an "answer," but rather more like these are clues that could help you search for the answer you need to find.