Incluindo o libmediainfo corretamente em um arquivo CMakeFiles.txt para uso em seus projetos
Dica publicada em C/C++ / Módulos
Incluindo o libmediainfo corretamente em um arquivo CMakeFiles.txt para uso em seus projetos
A biblioteca libmediainfo serve basicamente para extrair informações de arquivos multimídia. Se você está precisando extrair informações de arquivos multimídia e não precisa dos recursos do Qt5 por exemplo, você pode usar essa biblioteca. Não tem todo aquele desempenho, mas é uma opção que eu decidi testar no meu projeto.
Para incluir no CMakeFiles.txt, você vai precisar usar esses dois recursos que você provavelmente já usa:
Não sei como ficaria usando find_package(), então fiz dessa forma bem direta:
Já deveria estar pronto, só que sofri com erros como referências não definidas e um erro desse nível:
Esse -lz é parte do libzen, dependência do libmediainfo e em relação a mensagem acima, nem coloquei ela completa porque ela mesma já diz o que está faltando.
Na linha de comando isso ficaria assim: -lmediainfo -lz -ldl
O -ldl se refere ao libdl do erro acima. Então, para inclusão completa da biblioteca no CMakeFiles.txt, eu fiz dessa forma:
E dessa forma funcionou. A versão que eu usei foi a versão 22.03, mas deve funcionar em outras versões.
Uma dica básica sobre seu uso, pode ser encontrado aqui: Use MediaInfo library to get video information in C++ - Katastros
Exemplos de uso, podem ser encontrados aqui:
O site oficial para mais informações:
Para incluir no CMakeFiles.txt, você vai precisar usar esses dois recursos que você provavelmente já usa:
include_directories() target_link_libraries()
Não sei como ficaria usando find_package(), então fiz dessa forma bem direta:
include_directories(
/usr/include/MediaInfo
/usr/include/MediaInfoDLL
)
target_link_libraries(
mediainfo
)
Já deveria estar pronto, só que sofri com erros como referências não definidas e um erro desse nível:
[ ... ] undefined reference to symbol 'dlclose@@GLIBC_2.2.5' /usr/bin/ld: note: 'dlclose@@GLIBC_2.2.5' is defined in DSO /lib/x86_64-linux-gnu/libdl.so.2 so try adding it to the linker command line /lib/x86_64-linux-gnu/libdl.so.2: could not read symbols: Invalid operation: [ ... ]Então, olhando para dentro do pacote do libmediainfo, analisei o arquivo /usr/lib64/pkgconfig/libmediainfo.pc, e essa linha me interessou:
Libs: -L/usr/lib64 -lmediainfo -lz
Esse -lz é parte do libzen, dependência do libmediainfo e em relação a mensagem acima, nem coloquei ela completa porque ela mesma já diz o que está faltando.
Na linha de comando isso ficaria assim: -lmediainfo -lz -ldl
O -ldl se refere ao libdl do erro acima. Então, para inclusão completa da biblioteca no CMakeFiles.txt, eu fiz dessa forma:
include_directories(
/usr/include/MediaInfo
/usr/include/MediaInfoDLL
)
target_link_libraries(
mediainfo
dl
z
)
E dessa forma funcionou. A versão que eu usei foi a versão 22.03, mas deve funcionar em outras versões.
Uma dica básica sobre seu uso, pode ser encontrado aqui: Use MediaInfo library to get video information in C++ - Katastros
Exemplos de uso, podem ser encontrados aqui:
- C++ (Cpp) MediaInfo Examples, MediaInfo C++ (Cpp) Examples - HotExamples
- https://vimsky.com/zh-tw/examples/detail/cpp-ex---MediaInfo---class.html
O site oficial para mais informações: