Qt 静态编译如何加载 qtmultimedia 模块?(windows 7环境下 )


下载了Qt5.5.0的源码,按照官方文档和网上教程编译了一个版本
1、下载好相应软件
2、进入源码qtbase文件夹,在命令行使用configure 配置编译选项:


 configure  -confirm-license -opensource -prefix "C:\Qt\Qt5.5.0" -debug-and-release -static -platform win32-g++ -opengl desktop -no-angle -nomake examples -nomake tests -skip qtwebkit  -qt-sql-mysql -I "C:\tempdownload\qt-everywhere-opensource-src-5.5.0\qtbase\src\sql\drivers\mysql" -I "D:\mysql_temp\include"

3、mingw32-make、mingw32-make install

编译好了后测试了一下,多线程,数据库(数据库要把相关lib和dll放入到编译好的目录下lib文件夹)之类的都没问题,可以摆脱各种庞大的dll了。
但是有一个程序用到了qtmultimedia的 mediaplayer就发现编译提示是没有这个模块(只要在QT += multimedia就会出错),构建没通过,这时才发现qtmultimedia模块貌似没有编译到Qt。找了下官网的编译几篇相关的文章:

http://doc.qt.io/qt-5.5/windows-building.html
这篇是关于在windows下编译的,编译成功了应该是没有问题的,主要是下面的文章

http://doc.qt.io/qt-5.5/configure-options.html
http://doc.qt.io/qt-5.5/qtmodules.html
这两篇是关于配置的,不过只说了


 With configure, it is possible to include or exclude particular Qt modules in a Qt build.

也是说能实现,但是没有给例子和方法。。。例子是skip跳过那个模块的。

想问一下有没有过朋友Qt静态编译的时候带了 qtmultimedia的?该用什么方法?

静态编译 QT

滿tian 9 years, 9 months ago

已经弄好了,待会下班的时候把答案补上来

其实就还看了 stackoverflow的相同问题的回答 链接

只不过那边是linux环境我这里是windows环境。
里面给出的解决方法中有一段shell


 # The modules that are relevant for me. Please observe that THE ORDER MATTERS! I would add one module at the time and see how it complains when you try to build it.
MODS="qtx11extras qtimageformats qtscript qtquick1 qtdeclarative qtquickcontrols qtsvg qtmultimedia"


 for M in $MODS
do
    echo "----------------------------------------- MODULE: $M"
    echo "----------------------------------------- MODULE: $M" >> $LOG
    # Make module dir
    D=$O/$M
    mkdir -p $D
    cd $D
    # Use new qmake to create module makefile
    $O/qtbase/bin/qmake $SRC/$M/
    # Build module
    make -j$J >> $LOG
done

意思就是 qmake 一下 模块的文件夹 再build一下就行了

下面就是解决方法:

先新建个文件夹,如build文件夹 命令行中进入


 >路径/qtbase/bin/qmake.exe 路径/qtmultimedia

经过这一步,build文件夹里面就有了Makefile文件
接下来


 >mingw32-make
>mingw32-make install “C:\Qt\Qt5.5.0"

再打开Qt creator 编译程序就正常了

┌;雙子座灬 answered 9 years, 9 months ago

Your Answer