[英]What is the proper way to incorporate gstreamer into 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.