Ошибка компоновщика GStreamer LNK2019 и LNK2001 в Qt C++

У меня возникли проблемы с правильной компоновкой библиотеки gstreamer в qmake.

Итак, у меня есть библиотека, которую я написал, которая использует 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)" (?load@ContentVideo@@IEAAXVQString@@@Z)

и

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

Я знаю, что пути к заголовкам и библиотекам верны, потому что я получаю ошибки компиляции, такие как «gst/gst.h not found», когда я их изменяю.

Я понятия не имею, что я могу делать неправильно, может быть, кто-то может указать мне правильное направление.

Заранее спасибо.

РЕШЕНО:

Я компилировал проект с помощью 64-битного компилятора и использовал 32-битный gstreamer SDK... Спасибо, Павел Красавин, за указание на то, что это может быть проблемой.


person Pedro Leal    schedule 19.05.2015    source источник
comment
какие файлы находятся в ../OtherLibs/GStreamer/Lib? содержит ли он указанные библиотеки?   -  person m.s.    schedule 19.05.2015
comment
Да. Это действительно странно. Недавно я перешел с qt 5.1 на 5.4. В 5.1 тот же проект все еще работает на 5.1. Путь к библиотеке другой, но я внес необходимые изменения. Меня интересует происхождение проблемы. Может ли это быть в моей библиотеке, которая использует gstreamer, или в приложении, где я вызываю свою библиотеку?   -  person Pedro Leal    schedule 19.05.2015


Ответы (1)


g_assertion_message_expr() экспортируется libglib-2.0.so. Вы должны убедиться, что эта библиотека доступна по вашему пути (-L../OtherLibs/GStreamer/Lib). Кроме того, убедитесь, что эта библиотека имеет ту же архитектуру, что и ваш проект.

person Pavel Krasavin    schedule 19.05.2015
comment
У меня там только файлы lib. Недавно я перешел с qt 5.1 на 5.4, и в более старой версии gstreamer работает по назначению. Я начал проект в 5.1 и перекомпилировал его после обновления до версии 5.4. Может ли это быть связано с чем-то? Странно, потому что все остальные мои проекты работают с новой версией - person Pedro Leal; 19.05.2015
comment
Вам также необходимо добавить библиотеку glib-2.0 в ваш новый проект, потому что она не может найти функцию g_assertion_message_expr(). Итак, добавьте LIBS += -L<path where glib-2.0 is located> -lglib-2.0. - person Pavel Krasavin; 20.05.2015
comment
Я добавил, но все еще не идет. Я знаю, что трудно понять это без той информации, которую я вам даю. В основном я хотел убедиться, что делаю все правильно (очевидно, что-то не хватает). Вы думаете, что проблема может быть в библиотеке WTAV или в проекте, который вызывает WTAV? Спасибо за помощь Павел - person Pedro Leal; 20.05.2015
comment
Я предположил, что использую компилятор x86, потому что путь сборки имеет 32-битное имя. Я проверил, какой компилятор используется по умолчанию, и увидел, что он 64-битный. Так что вы были правы в первую очередь! Спасибо, Павел, и извините за то, что сомневался в вас ^^. С уважением - person Pedro Leal; 20.05.2015