Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите завести VLC на QT / 25 сообщений из 32, страница 1 из 2
11.05.2014, 19:42
    #38638083
HellFighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите завести VLC на QT
Я достаточно давно программирую на 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
11.05.2014, 20:22
    #38638107
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите завести VLC на QT
HellFighterЯ достаточно давно программирую на C++ под Windows, но тут впервые решил попробовать сделать проект на кросплатформенном фреймворке QT с использованием библиотеки VLC.Как говорить на китайском языке используя немецкий?
Сумеешь ответить на этот вопрос - мы тебе ответим как писать в Qt c VLC.


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

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

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

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

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

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

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

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



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

Попробуй что-нибудь типа:
Код: plaintext
1.
LIBS += -llibvlc -LC:/QT/vlc/vlc-2.1.3
...
Рейтинг: 0 / 0
11.05.2014, 22:25
    #38638172
HellFighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите завести VLC на QT
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
11.05.2014, 22:28
    #38638173
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите завести VLC на QT
Dimitry SibiryakovЭти суффиксы и в MSVC разводятся макросами, так что к линковке никакого отношения не имеютЗато имеют - к собственной версии включаемых заголовков.
MS SDK "корёжит", например, ChangeDisplaySettings до __imp_ChangeDisplaySettingsA. Опять-таки, выглядит вполне регулярно, но в процессе разборок с LNK2001 я заметил функции, имена которых "не корёжатся".
Т.е. некоторое "здесь играем, здесь не играем, здесь рыбу заворачивали" - намечается.
...
Рейтинг: 0 / 0
11.05.2014, 22:39
    #38638178
HellFighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите завести VLC на QT
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
11.05.2014, 23:02
    #38638187
nyash-myash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите завести VLC на QT
Не надо ничего совмещать. У меня есть проект qt+vlc. Сейчас я его собираю как qt4.8.5+msvc2010, но начальный вариант был qt5.2.0+mingw4.8 и он по прежнему собирается и работает. Собирается с libvlc.lib который идет в комплекте с vlc.

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

Ты пробовал абсолютные пути прописывать? Может я поленился переделать пути в относительные, а может с ними у меня не работало.
...
Рейтинг: 0 / 0
11.05.2014, 23:54
    #38638210
HellFighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите завести VLC на QT
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
12.05.2014, 00:00
    #38638215
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите завести VLC на QT
HellFighterЕсли у Вас работает, то что же я могу не так делать?
Что-то ты не туда пихаешь и он пытается распознать DLL как что-то другое. Или эта DLL, что
ты ему подсовываешь, кривая/битая. Полную строку компиляции/линковки показывай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.05.2014, 00:09
    #38638218
HellFighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите завести VLC на QT
Код: 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
12.05.2014, 00:23
    #38638222
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите завести VLC на QT
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
12.05.2014, 00:25
    #38638223
nyash-myash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите завести VLC на QT
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
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите завести VLC на QT / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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