2015-05-19 130 views
0

我在正確鏈接qmake中的gstreamer庫時遇到了一些麻煩。Qt中的GStreamer鏈接器錯誤LNK2019和LNK2001 C++

所以,我有庫我寫的,它使用的GStreamer,我將此行的.pro文件:

INCLUDEPATH += ../OtherLibs/GStreamer/Include 
INCLUDEPATH += ../OtherLibs/GStreamer/Include/glib-2.0 
INCLUDEPATH += ../OtherLibs/GStreamer/Include/libxml2 
LIBS += -L../OtherLibs/GStreamer/Lib -lgobject-2.0 -lgstreamer-0.10 -lglib-2.0 -lgstapp-0.10 

我運行的qmake,然後編譯和我完全不收到任何錯誤訊息。

我使用這個庫在另一個的Qt項目,我得到:

WTAV.lib(contentvideo.obj):-1: error: LNK2019: unresolved external symbol g_assertion_message_expr referenced in function "protected: void __cdecl ContentVideo::load(class QString)" ([email protected]@@[email protected]@@Z) 

WTAV.lib(mediapipeline.obj):-1: error: LNK2001: unresolved external symbol g_assertion_message_expr 

我知道,頭文件和庫的路徑是正確的,因爲我得到的編譯一樣的錯誤「 gst/gst.h not found「當我改變他們。

我不知道我可能會做錯什麼,也許有人可以指出我在正確的方向。

在此先感謝。

解決:

我編譯與64位編譯器項目,並使用32位的GStreamer SDK ...謝謝你帕維爾Krasavin的指出這可能是問題。

+1

什麼文件在'../ OtherLibs/GStreamer/Lib'中?它是否包含指定的庫? –

+0

是的。這真的很奇怪。我最近從qt 5.1遷移到5.4。在5.1中,同一個項目仍然在5.1上運行。圖書館的路徑不同,但我做了必要的修改。我想知道問題的根源。可能是在我的圖書館中使用gstreamer或在我打電話給我的圖書館的應用程序中? –

回答

1

g_assertion_message_expr()由libglib-2.0.so導出。您應該檢查此庫是否在您的路徑中可用(-L ../ OtherLibs/GStreamer/Lib)。此外,請檢查此庫與您的項目具有相同的體系結構。

+0

我只有lib文件。我最近從qt 5.1遷移到5.4,而在舊版本中,gstreamer按預期工作。我在5.1中啓動了該項目,並在更新到版本5.4後重新編譯它。可能與任何事情有關?這很奇怪,因爲我所有的其他項目都使用新版本 –

+0

您還需要將glib-2.0庫添加到您的新項目中,因爲它找不到函數_g_assertion_message_expr()_。因此,添加'LIBS + = -L -lglib-2.0'。 –

+0

我已經添加,但仍然沒有去。我知道,如果沒有我提供的信息,很難找出答案。我主要想確定我正在做的事情(顯然缺少某些東西)。您認爲問題可能出現在圖書館WTAV或調用WTAV的項目中?感謝您的幫助Pavel –