繁体   English   中英

GStreamer Qt WINDOWS

[英]GStreamer Qt WINDOWS

关于在Linux中为Qt配置.pro文件以运行GStreamer的信息很多。 但是在WINDOWS中做同样的事情看起来是如此困难。 我从他们的官方网站下载了Gst并运行了安装程序。 现在它在D:\\ gstreamer \\ 1.0 \\ x86 ...中,我找到了唯一尝试更改qt .pro文件的人的描述。 我做了同样的事情:

INCLUDEPATH += c:/gstreamer/1.0/x86/include \
        c:/gstreamer/1.0/x86/include/gstreamer-1.0/gst \
        c:/gstreamer/1.0/x86/include/glib-2.0\
        c:/gstreamer/1.0/x86/include/glib-2.0/glib \
        c:/gstreamer/1.0/x86/lib/glib-2.0/include

LIBS += -Lc:/gstreamer/1.0/x86/lib

CONFIG += c:/gstreamer/1.0/x86/lib/pkgconfig

并且项目find会在为gstreamer键入“ gst_init(”和其他内容时提供帮助,但会产生错误

未定义对gst_init的引用

这是问题。 如何在Windows中连接GStreamer?

#include <QCoreApplication>
#include <gst/gst.h>
int main(int argc, char *argv[])
{

    gst_init(NULL,NULL);
    //g_print("abc");

    return 0;
}

C:/Qt/Qt5.1.1/Tools/mingw48_32/bin/mingw32-make -f Makefile.Debug mingw32-make [1]:输入目录'D:/ Projects / AllTests / Qt / build-Console-Desktop_Qt_5_1_1_MinGW_32bit-Debug' g ++ -Wl,-子系统,控制台-mthreads -o debug \\ Console.exe debug / main.o -Lc:/gstreamer/1.0/x86/lib -LC:\\ Qt \\ Qt5.1.1 \\ 5.1.1 \\ mingw48_32 \\ lib -lQt5Cored debug / main.o:在函数main': D:\\Projects\\AllTests\\Qt\\build-Console-Desktop_Qt_5_1_1_MinGW_32bit-Debug/../Console/main.cpp:8: undefined reference to gst_init的main': D:\\Projects\\AllTests\\Qt\\build-Console-Desktop_Qt_5_1_1_MinGW_32bit-Debug/../Console/main.cpp:8: undefined reference to collect2.exe:错误:ld返回1个退出状态Makefile.Debug:77:目标'debug \\ Console.exe'的配方失败mingw32-make [1]: * [debug \\ Console.exe]错误1 mingw32-make [1]:离开目录'D:/ Projects / AllTests / Qt / build-Console-Desktop_Qt_5_1_1_MinGW_32bit-Debug'makefile:34:目标'debug'的配方失败mingw32-make:* [debug]错误2 00:20:18:进程«C:\\ Qt \\ Qt5.1.1 \\ Tools \\ mingw48_32 \\ bin \\ mingw32-make.exe»以代码2结尾。

您必须指定二进制文件必须链接到的gstreamer库。

根据有关qmake的文档 ,通过发出LIBS += -Lc:/gstreamer/1.0/x86/lib您正在指示qmake在给定路径内查找库,但实际上没有哪个库链接到您的二进制文件。 我对gstreamer并不熟悉,因此我不确定在您介绍的特定情况下必须链接哪些库,但是我想您会在gstreamer/1.0/x86/lib找到它们。 如果不确定,可以将它们全部添加到列表中,并在其名称前加上小写字母“ l”。 例如,如果该库名为math ,则可以通过将-lmath附加到列表中来添加它。 请注意不要同时添加同一个库的多个版本,例如调试版本和发行版本,否则您肯定会遇到多个引用链接错误。

除了像上面建议的那样手动指定应该链接到二进制文件的库之外,您还可以选择使用pkg-config为您完成艰苦的工作。 有关gstreamer的文档,指出可以将以下内容添加到.pro文件中:

CONFIG += link_pkgconfig
PKGCONFIG += QtGStreamer-0.10

这种方法的缺点自然是必须首先获取pkg-config才能在系统上运行。

我发现在Windows上,您确实可以避免pkg-config的东西,而不需要将gstreamer所需的所有内容都包含为libs和.h 但是,您还需要包括GTK Kei Naga的一个很好的答案在VS 2010中提供了qt的想法http://gstreamer-devel.966125.n4.nabble.com/Configure-Visual-Studio-2010-for-GStreamer-td3804989.html,但如果您转移了所有内容他写了.pro文件,它也将起作用(至少对我而言)。

这是pro文件的代码:

INCLUDEPATH += C:/ ... /GStreamer/v0.10.6/sdk/include/gstreamer-0.10 \
           C:/ ... /GTK/include/libxml2 \
           C:/ ... /GTK/include/libglade-2.0 \
                    C:/ ... /GTK/lib/gtkglext-1.0/include \
                    C:/ ... /GTK/lib/glib-2.0/include \
                    C:/ ... /GTK/lib/gtk-2.0/include \
                    C:/ ... /GTK/include/gtkglext-1.0 \
                    C:/ ... /GTK/include/atk-1.0 \
                    C:/ ... /GTK/include/cairo \
                    C:/ ... /GTK/include/pango-1.0 \
                    C:/ ... /GTK/include/glib-2.0 \
                    C:/ ... /GTK/include/gtk-2.0 \
                    C:/ ... /GTK/include

LIBS += -LC:/ ... /GTK/lib -LC:/ ... /GStreamer/v0.10.6/sdk/lib -lgstreamer-0.10 -lglib-2.0  -lgobject-2.0 -lgtk-win32-2.0 -lgstinterfaces-0.10

我觉得这很适合我。 它使用由GStreamer安装设置的环境变量-因此应在其他PC上工作。 64位环境变量不同,但原理相同。

QT       += core gui
TARGET = GStreamerTest4
TEMPLATE = app
SOURCES += \
    qt-videooverlay.cpp

HEADERS  +=
FORMS    +=

GstreamerDir=$$(GSTREAMER_1_0_ROOT_X86)

INCLUDEPATH = $${GstreamerDir}/include/gstreamer-1.0
INCLUDEPATH += $${GstreamerDir}/include/glib-2.0
INCLUDEPATH += $${GstreamerDir}/lib/glib-2.0/include
INCLUDEPATH += $${GstreamerDir}/lib/gstreamer-1.0/include

LIBS = $${GstreamerDir}/lib/gstreamer-1.0.lib
LIBS += $${GstreamerDir}/lib/*.lib

此外,您需要确保C:\\ gstreamer \\ 1.0 \\ x86 \\ bin在路径上(控制面板,也可以在QtCreator中进行设置)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM