powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите завести VLC на QT
32 сообщений из 32, показаны все 2 страниц
Помогите завести VLC на QT
    #38638083
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я достаточно давно программирую на C++ под Windows, но тут впервые решил попробовать сделать проект на кросплатформенном фреймворке QT с использованием библиотеки VLC.

Я скачал и установил QT 5.2.1, для написания кода использую QT Creator. Для сборки использую MinGW (кстати кто бы мне объяснил какая разница что использовать и как вообще так получилось что у меня такой широкий выбор чем собирать - раньше с подобным не сталкивался).

Далее скачал VLC 2.1.3 (бинари для Win8 х64) и кинул в папку C:/QT/vlc/vlc-2.1.3. Мои проекты лежат в C:/QT/Projects.
Теперь всё готово для первого запуска, создал проект Widget, проверил его работоспособность и начал подключать VLC.

В .pro файл прописал следующее:
Код: plaintext
1.
2.
3.
QMAKE_LIBDIR += ../../vlc/vlc-2.1.3/sdk/lib
LIBS     += -L "libvlc.lib" # -llibvlc
INCLUDEPATH += ../../vlc/vlc-2.1.3/sdk/include


в mainwindow.cpp добавил:
Код: plaintext
1.
#include <vlc/vlc.h>


и в конструкторе окна для теста написал:
Код: plaintext
1.
2.
3.
4.
    libvlc_instance_t * vlcInst = libvlc_new(0,NULL);

    if(vlcInst)
        libvlc_release(vlcInst);



На попытку сборки компилятор мне выдал:
Код: plaintext
1.
2.
3.
C:\Qt\Projects\build-SecondApp-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../SecondApp/mainwindow.cpp:24: undefined reference to `libvlc_new'
C:\Qt\Projects\build-SecondApp-Desktop_Qt_5_2_1_MinGW_32bit-Debug/../SecondApp/mainwindow.cpp:27: undefined reference to `libvlc_release'
collect2.exe: error: ld returned 1 exit status



Долго мучал гугл, пытался сам понять в чём проблема, подпихивал DLL-ки в разные папки проекта и сборок - никакого результата. (Даже пробовал добавить библиотеку через меню редактора)

Чего я не понимаю, как правильно подключить VLC библиотеку в QT? Подскажите, пожалуйста! (и если можно, то ещё про выбор компилятора для сборки поясните)
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638107
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HellFighterЯ достаточно давно программирую на C++ под Windows, но тут впервые решил попробовать сделать проект на кросплатформенном фреймворке QT с использованием библиотеки VLC.Как говорить на китайском языке используя немецкий?
Сумеешь ответить на этот вопрос - мы тебе ответим как писать в Qt c VLC.


HellFighterЯ скачал и установил QT 5.2.1, для написания кода использую QT Creator. Для сборки использую MinGW (кстати кто бы мне объяснил какая разница что использовать и как вообще так получилось что у меня такой широкий выбор чем собирать - раньше с подобным не сталкивался).Добро пожаловать в реальный мир.
Каждый кто хочет и может создает свой собственный компилятор, а несчастные программисты вынуждены выбирать что им использовать.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638126
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

авторКак говорить на китайском языке используя немецкий?
Сумеешь ответить на этот вопрос - мы тебе ответим как писать в Qt c VLC.

Вы VLC c VCL не путаете? Я пытаюсь подключить библиотеку воспроизведения видео, а не прикручиваю графический фреймворк VCL к QT.
Иначе я просто не понимаю суть комментария.

авторДобро пожаловать в реальный мир.
Каждый кто хочет и может создает свой собственный компилятор, а несчастные программисты вынуждены выбирать что им использовать.

Это понятно, просто какая разница какой из них использовать если по сути все должны поддерживать один и тот же стандарт?
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638127
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HellFighterЭто понятно, просто какая разница какой из них использовать если по сути все должны поддерживать один и тот же стандарт?Наличие стандарта на язык никак не способствует появлению стандарта на инструментарий сборки.
Даже заголовочные файлы могут различаться. И от компилятора к компилятору и от платформы к платформе.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638128
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так чем мне это всё выливается как конечному пользователю компилятора? Какая например разница между выбором MSVC или MinGW для сборки проекта QT? Или это важно только при использовании фич конкретного компилятора?
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638132
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HellFighterКакая например разница между выбором MSVC или MinGW для сборки проекта QT?В случае MSVC надо явно указывать все используемые библиотеки, за исключением, грубо говоря, kernel32.
В случае MinGW, вероятно, тоже.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638141
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovHellFighterКакая например разница между выбором MSVC или MinGW для сборки проекта QT?В случае MSVC надо явно указывать все используемые библиотеки, за исключением, грубо говоря, kernel32.
В случае MinGW, вероятно, тоже.

Ну вобщем видимо разницы мало, по крайней мере я пока не вижу :)

Ладно, на самом деле ещё остаётся основной вопрос: что я не так делаю, что не подключается VLC?
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638142
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте
LIBS += -lvlc
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638146
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HellFighterЛадно, на самом деле ещё остаётся основной вопрос: что я не так делаю, что не подключается VLC?
ЕМНИП, .lib-файлы -- это MSVC-шные static либы. У MinGW эти либы имеюи расширение .a. Не уверен, что формат у них разный.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638148
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GCC не дурак, он может прямо DLL-ки линковать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638150
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovGCC не дурак, он может прямо DLL-ки линковать.

GCC, да, so линкует. А вот как под виндой это работает в MinGW -- не совсем уверен.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638155
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovGCC не дурак, он может прямо DLL-ки линковатьПредлагаете руками расписать все экспорты, с учётом префиксов и суффиксов?
Или создатели GCC поддерживают собственную версию MS SDK?
Или что?
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638163
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovПредлагаете руками расписать все экспорты, с учётом префиксов и
суффиксов?
Или создатели GCC поддерживают собственную версию MS SDK?
Или что?
Win32 API имеет в большинстве своём соглашение stdcall и C-linkage, то есть имена
экспортируемых функций не декорируются.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638164
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovWin32 API имеет в большинстве своём соглашение stdcall и C-linkage, то есть имена
экспортируемых функций не декорируютсяСуффиксов W и A это не отменяет. Мелочь, но всё-таки.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638165
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСуффиксов W и A это не отменяет. Мелочь, но всё-таки.
Эти суффиксы и в MSVC разводятся макросами, так что к линковке никакого отношения не имеют.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638168
nyash-myash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HellFighterВ .pro файл прописал следующее:
Код: plaintext
1.
LIBS     += -L "libvlc.lib" # -llibvlc



Видно, что писал и не понимал, что пишешь. (Подсказка: -Lпуть к библиотекам, -lимя библиотеки)

Попробуй что-нибудь типа:
Код: plaintext
1.
LIBS += -llibvlc -LC:/QT/vlc/vlc-2.1.3
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638172
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nyash-myashHellFighterВ .pro файл прописал следующее:
Код: plaintext
1.
LIBS     += -L "libvlc.lib" # -llibvlc



Видно, что писал и не понимал, что пишешь. (Подсказка: -Lпуть к библиотекам, -lимя библиотеки)

Попробуй что-нибудь типа:
Код: plaintext
1.
LIBS += -llibvlc -LC:/QT/vlc/vlc-2.1.3



Ну не особо понимал, да. Говорю же, второй день на QT.
Ну в общем то не помогло, попробовал.

NekZЕМНИП, .lib-файлы -- это MSVC-шные static либы. У MinGW эти либы имеюи расширение .a. Не уверен, что формат у них разный.
Ну так и как дальше быть? .so и .a это юниксовые библиотеки на сколько я помню, в винде вроде как не поддерживаются. Ну и VLC для винды собственно распространяется с .lib. Получается тут я как раз и подошёл к месту где имеет значение какой компилятор использовать?
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638173
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЭти суффиксы и в MSVC разводятся макросами, так что к линковке никакого отношения не имеютЗато имеют - к собственной версии включаемых заголовков.
MS SDK "корёжит", например, ChangeDisplaySettings до __imp_ChangeDisplaySettingsA. Опять-таки, выглядит вполне регулярно, но в процессе разборок с LNK2001 я заметил функции, имена которых "не корёжатся".
Т.е. некоторое "здесь играем, здесь не играем, здесь рыбу заворачивали" - намечается.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638178
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZПопробуйте
LIBS += -lvlc
nyash-myashПопробуй что-нибудь типа:
LIBS += -llibvlc -LC:/QT/vlc/vlc-2.1.3

А вот совместив и написав
Код: plaintext
1.
LIBS += -lvlc -L"C:/QT/vlc/vlc-2.1.3"



Появилось другое сообщение об ошибке:
Код: plaintext
1.
C:\QT\vlc\vlc-2.1.3\libvlc.dll:-1: ошибка: file not recognized: File format not recognized


Похоже теперь файл обнаруживается и как раз происходит конфликт компилятора с библиотекой созданной другим компилятором (если я правильно понял) Каким образом по -lvlc QT понял что нужно подтягивать libvlc.dll ? о_О

Ну а этот конфликт решается как, переходом к компилятору MSVC? (тут у меня вообще смешной косяк - после переключения говорит что нет файла <vlc/vlc.h>, хотя настройки проекта я не менял)
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638187
nyash-myash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не надо ничего совмещать. У меня есть проект qt+vlc. Сейчас я его собираю как qt4.8.5+msvc2010, но начальный вариант был qt5.2.0+mingw4.8 и он по прежнему собирается и работает. Собирается с libvlc.lib который идет в комплекте с vlc.

Как раз для msvc2010 у меня используются самопальные lib и def файлы. Если мне не изменяет память, с родным lib файлом приложение просто падало при вызове vlc функций.

Ты пробовал абсолютные пути прописывать? Может я поленился переделать пути в относительные, а может с ними у меня не работало.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638210
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nyash-myashНе надо ничего совмещать. У меня есть проект qt+vlc. Сейчас я его собираю как qt4.8.5+msvc2010, но начальный вариант был qt5.2.0+mingw4.8 и он по прежнему собирается и работает. Собирается с libvlc.lib который идет в комплекте с vlc.

Как раз для msvc2010 у меня используются самопальные lib и def файлы. Если мне не изменяет память, с родным lib файлом приложение просто падало при вызове vlc функций.

Ты пробовал абсолютные пути прописывать? Может я поленился переделать пути в относительные, а может с ними у меня не работало.

Пробовал:
Код: plaintext
1.
2.
LIBS += -lvlc -L"C:/QT/vlc/vlc-2.1.3"
INCLUDEPATH += C:/QT/vlc/vlc-2.1.3/sdk/include


Результат всё тот же
Код: plaintext
1.
C:\QT\vlc\vlc-2.1.3\libvlc.dll:-1: ошибка: file not recognized: File format not recognized


Не понимаю, всё начисто поставлено только что, всё свежее... Если у Вас работает, то что же я могу не так делать? о_О
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638215
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HellFighterЕсли у Вас работает, то что же я могу не так делать?
Что-то ты не туда пихаешь и он пытается распознать DLL как что-то другое. Или эта DLL, что
ты ему подсовываешь, кривая/битая. Полную строку компиляции/линковки показывай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638218
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
00:08:48: Выполняются этапы для проекта SecondApp...
00:08:48: Настройки не изменились, этап qmake пропускается.
00:08:48: Запускается: «C:\Qt\Tools\mingw48_32\bin\mingw32-make.exe» 
C:\Qt\5.2.1\mingw48_32\bin\qmake.exe -spec win32-g++ CONFIG+=debug -o Makefile ..\SecondApp\SecondApp.pro
C:/Qt/Tools/mingw48_32/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'C:/Qt/Projects/build-SecondApp-Desktop_Qt_5_2_1_MinGW_32bit-Debug'
g++ -Wl,-subsystem,windows -mthreads -o debug\SecondApp.exe debug/main.o debug/mainwindow.o debug/moc_mainwindow.o  -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmaind -lvlc -LC:/QT/vlc/vlc-2.1.3 -LC:\Qt\5.2.1\mingw48_32\lib -lQt5Widgetsd -lQt5Guid -lQt5Cored 
C:/QT/vlc/vlc-2.1.3/libvlc.dll: file not recognized: File format not recognized
collect2.exe: error: ld returned 1 exit status
Makefile.Debug:80: recipe for target 'debug\SecondApp.exe' failed
mingw32-make[1]: *** [debug\SecondApp.exe] Error 1
mingw32-make[1]: Leaving directory 'C:/Qt/Projects/build-SecondApp-Desktop_Qt_5_2_1_MinGW_32bit-Debug'
makefile:34: recipe for target 'debug' failed
mingw32-make: *** [debug] Error 2
00:08:49: Процесс «C:\Qt\Tools\mingw48_32\bin\mingw32-make.exe» завершился с кодом 2.
Ошибка при сборке/установке проекта SecondApp (комплект: Desktop Qt 5.2.1 MinGW 32bit)
Во время выполнения этапа «Сборка»
00:08:49: Прошло времени: 00:01.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638222
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HellFighterC:/QT/vlc/vlc-2.1.3/libvlc.dll: filenot recognized: File formatnot
recognized
Загляни в этот файл и убедись, что это DLL, а не мусор какой-нибудь. В комплекте MinGW,
кажется, objdump позволяет посмотреть таблицы экспорта и фообще формат библиотеки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638223
nyash-myash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pro файл для демо плеера на котором я тренировался у меня выглядит так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
TEMPLATE = app
TARGET = qtvlc
DEPENDPATH += .
INCLUDEPATH += "c:/vlc-2.1.3/sdk/include"

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

LIBS += -llibvlc -Lc:/vlc-2.1.3/sdk/lib

# Input
HEADERS += player.h
SOURCES += main.cpp player.cpp



Хватит линковщику пихать dll, ему нужен libvlc.lib

Кстати в vlc есть много веселого, например:
1. libvlc_media_new_path отказывается открывать файлы в пути к которым есть прямой слеш(/).
2. Документация, которую писал капитан очевидность. Например:
libvlc_video_set_mouse_input(player, 0) - отключает перехват событий мыши.
Это капитан написал, а вот информация, что под Windows оно не работает если не вызвать libvlc_video_set_key_input(player, 0) есть только в посте на форуме.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638226
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VLC, VCL... Поди упомни все эти аббревиатуры.

А по сабжу, детальная инструкция лежит тут:
https://wiki.videolan.org/LibVLC_SampleCode_Qt/
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638229
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nyash-myash,

Я не кормлю ему dll, я делаю в точности то же, что и Вы, во всяком случае мне так кажется...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = SecondApp
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

DEPENDPATH += .
INCLUDEPATH += c:/QT/vlc/vlc-2.1.3/sdk/include
LIBS += -llibvlc -Lc:/QT/vlc/vlc-2.1.3/sdk/lib


Код: plaintext
1.
2.
undefined reference to `libvlc_new'
undefined reference to `libvlc_release'



Не понимаю в чём дело...

За ссылку спасибо, завтра обязательно поковыряю то что там лежит!
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638232
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

Да, видел эту инструкцию. То что там написано по моему ни чем не отличается от того, что уже было написано здесь, те пока не помогло....
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638233
nyash-myash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HellFighterДалее скачал VLC 2.1.3 (бинари для Win8 х64)
О, как-то пропустил это! Только что проверил, скачал 64х битную версию vlc. Проект тоже перестал собираться. У меня и qt, и vlc 32х битные.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638247
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, пытаться линковать 32-х разрядное приложение с 64-х разрядной библиотекой может не
каждый...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38638308
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HellFighterНу а этот конфликт решается как, переходом к компилятору MSVC? (тут у меня вообще смешной косяк - после переключения говорит что нет файла <vlc/vlc.h>, хотя настройки проекта я не менял)
Насчёт инклуда не знаю, если не менял includepath, то всё должно быть ОК.
А вот по поводу компилятора -- лучше погуглить. Я под виндой давно уже не кодил/собирал ничего.
А что мешает использовать MSVC? QMake-у указать нужную спецификацию, чтобы сгенерил .vcproj, а его уже студийному компилятору подсунуть -- не проблема.
...
Рейтинг: 0 / 0
Помогите завести VLC на QT
    #38639241
HellFighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovДа, пытаться линковать 32-х разрядное приложение с 64-х разрядной библиотекой может не
каждый...


FACEPALM ... Реально, народ, я туплю просто как Модератор: следим за языком ...... Стыдно, реально стыдно....))))

Sibiryakov , спасибо что ткнул носом =)

Скачал VLC 32бита, всё начало компилиться и запускаться! Я так запарился с этим QT и незнакомым мне VLC, что не заметил очевидного =)

Теперь буду разбираться как это работает, ВСЕМ огромное спасибо за участие в решении моей тупой проблемы! =)
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите завести VLC на QT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]