簡體   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