2015-05-19 80 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 –