【发布时间】:2016-10-14 13:11:11
【问题描述】:
20160614:
我已经通过 MacPorts 安装了 glfw。
sudo port install glfw
我已经检查过 /opt/local/lib/libglfw.dylib 是否存在。
这是我的 main.cpp 顶部标题:
#include <GLFW/glfw3.h>
我的 CMakeLists.txt(file1):
cmake_minimum_required (VERSION 2.8)
project (t1)
include_directories(/opt/local/include)
link_directories(/opt/local/lib)
# find_library(MYGLFWLIB NAMES glfw HINTS /opt/local/lib NO_DEFAULT_PATH)
set(GLLIBS GL glfw glew)
add_executable(t1 main.cpp)
target_link_libraries(t1 ${GLLIBS})
在cmake . && make 没有报错之后,我通过./t1 执行
然后错误来了:
dyld: Library not loaded: lib/libglfw.3.dylib
Referenced from: /Users/...../t1
Reason: image not found
[1] 13949 trace trap ./t1
然后我使用otool -L t1 来检查 t1 中的 lib 依赖项
/opt/local/lib/libGL.1.dylib (compatibility version 4.0.0, current version 4.0.0)
lib/libglfw.3.dylib (compatibility version 3.0.0, current version 3.2.0)
/opt/local/lib/libGLEW.1.13.0.dylib (compatibility version 1.13.0, current version 1.13.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
有人能告诉我为什么 glfw 没有正确链接吗?
20160615:
修改我的 CMakeLists.txt(file2) 后:
cmake_minimum_required (VERSION 2.8)
project (t1)
include_directories(/opt/local/include)
link_directories(/opt/local/lib)
find_library(GL_LIB GL HINTS /opt/local/lib )
find_library(GLFW_LIB glfw HINTS /opt/local/lib)
find_library(GLEW_LIB glew HINTS /opt/local/lib)
message(${GLFW_LIB})
message(${GLEW_LIB})
message(${GL_LIB})
add_executable(t1 main.cpp)
target_link_libraries(t1 ${GL_LIB} ${GLFW_LIB} ${GLEW_LIB})
我有两个 osx 设备(MacMini 和 MacBookPro),MacPorts 和 Xcode 以及 CMake 和 System 的版本都是一样的:
Mac 操作系统:10.11.5 MacPorts 2.3.4 CMake:3.5.2 Xcode:7.3
CMakeLists 的两个版本(上面的文件 1 和文件 2)在 MacMini 中工作,链接器工作正常。 但是当谈到我的 MacBookPro 时,glfw 并没有很好地连接。
其他人也遇到了几乎相同的问题:
macports-cmake-make-dyld-library-not-loaded
这个问题与系统变量有关吗?
【问题讨论】: