我正在尝试使用带有 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/