Я хотел скомпилировать пример программы на C++, использующей VLC Api, в соответствии с https://wiki.videolan.org/LibVLC_Tutorial/, с моей Visual Studio 2012 на Windows 7 x64 (я все равно работаю с x86).
Чтобы получить файл .lib
, я выполнил следующие действия: https://wiki.videolan.org/GenerateLibFromDll/ а>. Сначала у меня были некоторые проблемы, но в итоге я получил (я заметил предупреждения):
И у меня есть созданный libvlc.lib
. Я переместил его в папку со своим main.cpp
, добавил путь к Project -> VC++ Directories -> Library directories
, а также добавил файл .lib
с Add -> existing item
. Я также добавил Project -> VC++ Directories -> Include Directories
, чтобы он указывал на ...vlc-2.1.5\include
.
Я запускаю clean, rebuild all
в своем пустом решении.
К сожалению, я получил ошибки:
1>------ Rebuild All started: Project: Project1, Configuration: Debug Win32 ------
1> Source.cpp
1>Source.obj : error LNK2019: unresolved external symbol _libvlc_new referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol _libvlc_release referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol _libvlc_media_new_location referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol _libvlc_media_release referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol _libvlc_media_player_new_from_media referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol _libvlc_media_player_release referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol _libvlc_media_player_play referenced in function _main
1>Source.obj : error LNK2019: unresolved external symbol _libvlc_media_player_stop referenced in function _main
1>...\Project1\Debug\Project1.exe : fatal error LNK1120: 8 unresolved externals
Похоже, что либо что-то не так с моим .lib
, либо он каким-то образом неправильно подключен. Компиляция работает нормально, линковка не работает.
Полный исходный код единственного .cpp
файла в проекте является точной копией руководства, размещенного на videolan.org: http://pastebin.com/5gfFVFZd
редактировать:
Согласно комментарию @user1
, я исправил команду dumpbin
(на скриншоте "libvlc.dill" должно быть "libvlc.dll"). Это действительно была одна проблема. После изменения я получил гораздо больше предупреждений (все того же типа, что и раньше, 277 вместе) и гораздо больший .def-файл (15 МБ, прогресс). Но выходной файл .lib имеет точно такой же размер (1,48 МБ - это очень маленький .lib), и ошибка компоновщика с ним преобладает. Так что я предполагаю, что с созданием .lib все еще что-то не так.
Файл .def
: http://pastebin.com/E81s6dnh Последние строки вызывают у меня дискомфорт:
256 FF 00001CF0 libvlc_vprinterr
257 100 00001790 libvlc_wait
LINK : fatal error LNK1328: missing string table
.def
файл (15 МБ, прогресс). Но выходной файл.lib
имеет точно такой же размер (1,48 МБ - он очень маленький.lib
), и с ним преобладает ошибка компоновщика. Так что я предполагаю, что с созданием.lib
все еще что-то не так. - person PolGraphic   schedule 29.12.2014.def
не был правильно изменен (EXPORTS libvlc_add_intf libvlc_audio_get_channel...
, как говорится в учебнике). После этого программа скомпилировалась. Можете ли вы сделать ответ из вашего комментария + тот? Я могу принять это :) - person PolGraphic   schedule 29.12.2014