gpt4 book ai didi

c++ - 无法使用 libvlc 库 (osx) 运行 C++ 程序

转载 作者:行者123 更新时间:2023-11-30 04:06:01 26 4
gpt4 key购买 nike

我正在尝试使用带有 libvlc 库的 cmake 来编译我的 C++ 项目。我的操作系统是 osx v10.9.2。我的 cmake 版本是 2.8.12。我实际上可以用 cmake 和 make 编译我的程序。但是当我尝试运行该程序时出现链接错误:

dyld: Library not loaded: @loader_path/lib/libvlc.5.dylib

.一些互联网搜索导致我出现链接错误,因为 libvlc 安装在/Applications/VLC.app/...../lib 中,这可能是问题所在吗?我应该以某种方式指定库的绝对链接吗?使用 rpath ?我在这里有点迷路了。

这是我的 CMakeLists.txt 简化版:

cmake_minimum_required(VERSION 2.8.8)

set(LIBVLC_PATH "/Applications/VLC.app/Contents/MacOs")

find_path(LIBVLC_INCLUDE_DIR
NAMES vlc/libvlc.h
PATHS ${LIBVLC_PATH}/include
PATH_SUFFIXES vlc
)

find_library( LIBVLC_LIBRARY
NAMES libvlc vlc
PATHS ${LIBVLC_PATH}/lib
NO_DEFAULT_PATH
)
find_library( LIBVLC_LIBRARY NAMES libvlc vlc)

find_library( LIBVLC5_LIBRARY
NAMES libvlc.5 vlc.5
PATHS ${LIBVLC_PATH}/lib
NO_DEFAULT_PATH
)
find_library( LIBVLC5_LIBRARY NAMES libvlc.5 vlc.5)

include_directories( ${LIBVLC_INCLUDE_DIR} )
link_directories( ${LIBVLC_PATH}/lib )

add_executable(
Projet.x
${sourcefiles}
${headerfiles}
)

target_link_libraries(
Projet.x
${LIBVLC_LIBRARY}
${LIBVLC5_LIBRARY}
)

[编辑解决方案]
感谢您的链接,我设法使用以下脚本使其工作:

#!/bin/bash
if [ $# -lt 2 ] ; then
echo "Usage: $0 <vlc_path> <project_path>"
exit 1
fi
VLC_PATH=$1
PROJECT_PATH=$2
install_name_tool -change @loader_path/lib/libvlc.5.dylib $VLC_PATH/lib/libvlc.5.dylib $YCSTATS_PATH/build/YCStats.x
install_name_tool -change @loader_path/lib/libvlccore.7.dylib $VLC_PATH/lib/libvlccore.7.dylib $PROJECT_PATH/build/YCStats.x

此脚本在 CMakeList.txt 中使用以下命令调用:

add_custom_command( TARGET Project.x
POST_BUILD
COMMAND ${CMAKE_SOURCE_DIR}/cmake/Modules/FixBundle.sh ${LIBVLC_PATH} ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Fixing application bundle for local run"
)

如果在那之后你没有看到任何区别,尝试修改你的主要源然后保存它并执行你的 make 命令(如果没有对你的文件应用任何更改,则二进制文件不会再次编译)(检查行:“Fixing本地运行的应用程序包")

最佳答案

免责声明:我对 MacOSX 开发了解不多。

我将此脚本用于我的项目:http://git.videolan.org/?p=vlmc.git;a=blob;f=cmake/FixBundle.sh这在很大程度上基于 Mac 上 VLC 的主要开发人员的建议。

它是从这个 CMakeLists.txt 调用的:http://git.videolan.org/?p=vlmc.git;a=blob;f=src/CMakeLists.txt#l288

我承认 CMakelists 需要一些清理,但它应该足够可读:)

遗憾的是,我没有正确解释其原因所需的技能,所以我会让真正了解的人更好地解释它。尽管如此,它应该会帮助您前进!

关于c++ - 无法使用 libvlc 库 (osx) 运行 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23065359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com