有很多关于在Linux中为Qtconfiguration.pro文件来运行GStreamer的信息。 但是在WINDOWS中看起来很困难。 我从他们的官方网站下载了Gst并运行了一个安装程序。 现在在D:\ gstreamer \ 1.0 \ x86中…我find了试图更改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
而项目发现,给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,-subsystem,console -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:in
main': D:\Projects\AllTests\Qt\build-Console-Desktop_Qt_5_1_1_MinGW_32bit-Debug/../Console/main.cpp:8: undefined reference to
/../Console/main.cpp:8: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:configuration目标'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:configuration目标'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”。 例如,如果库被称为数学 ,您可以通过将-lmath附加到列表来添加它。 只是要小心,不要同时添加同一个库的多个版本,比如调试版本和发布版本,否则你肯定会得到多个引用链接错误。
如上所示,不是手动指定应该链接到二进制文件的库,而是可以选择使用pkg-config来为您工作。 gstreamer的这个文档声明它将以下内容添加到.pro文件中:
CONFIG += link_pkgconfig PKGCONFIG += QtGStreamer-0.10
这种方法的缺点很自然,你必须先让pkg-config在你的系统上工作。
我发现,在Windows上,你真的可以避免pkg-config的东西比需要包括所有东西都需要gstreamer库和.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)。