为什么Xcode无法找到GLEW动态库,即使它在搜索路径中列出?

时间:2015-09-20 20:03:27

标签: c++ xcode opengl glew

OS X Yosemite 10.10.5 Xcode 6.4

背景:我需要使用 OpenGL加载库,例如 GLEW ,因为我的计算机不支持 OpenGl 版本我在学习。因此,我下载了GLEW-zip文件并使用 make 来安装动态库。

现在:我正在尝试在Xcode中使用这个动态链接库(libGLEW.1.13.0.dylib),但是我收到了以下错误" ld:找不到-lGLEW"的库。但是,我已经告诉Xcode在哪里找到它:

  1. 首先,将 /usr/lib/libGLEW.1.13.0.dylib 添加到项目的构建阶段 - >链接二进制库
  2. 然后,将 / usr / lib 添加到项目的构建设置 - >图书馆搜索 路径。
  3. 最后,将包含文件: / usr / include 添加到项目的构建设置 - >标题搜索 路径
  4. 什么是或可能导致此问题?

    解决:

    问题:动态库安装在错误的目录/usr/lib中。应该在/usr/local/lib。 @Ken Thomases的完整解释如下。

    解决方案:将Makefile的GLEW_DEST ?= /usr更改为GLEW_DEST ?= /usr/local。这里简要提到http://glew.sourceforge.net/install.html

1 个答案:

答案 0 :(得分:1)

我认为问题的基础是你将GLEW安装到/ usr / lib中。通常,应为系统库保留/ usr / lib。第三方库应该转到别处,例如/ usr / local / lib。 GLEW构建系统可能允许您在configure或“make install”期间指定/ usr / local的“前缀”。您必须查阅其文档。

/ usr / lib错误的一个原因是因为使用Xcode的典型构建使用link命令的-isysroot选项。这会将基于标准系统目录的路径重定向到SDK目录。因此,对/ usr / lib的引用被解释为对/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib的引用。这就是基于SDK的开发的基础。

显然,/ Applications / Xcode.app / Constate / Developer /平台/ MacOSX.platform /Developer / SDKs / MacOSX10.10.sdk / usr / lib不包含您的libGLEW.1.13.0.dylib重新尝试链接到。因此链接错误。

因此,您可以将GLEW安装到/ usr / local并将其链接。但是,您必须了解这不会导致可以分发给其他系统的可执行文件。那些其他系统将没有GLEW,因此您的程序将无法加载。您真正需要做的是将GLEW构建为一个框架,并将其与之链接并将其作为应用程序包的一部分发布。或者,如果GLEW无法构建为框架,则需要构建它并将其“安装”到系统中而不是“安装”到私有构建目录中,然后将该构建目录复制到应用程序包中。您还需要确保GLEW库中的引用与您的应用程序包相关,因此它可以放在最终用户系统的任何位置,并且仍然可以解析引用。 (默认情况下,引用将使用绝对路径,只有在库位于这些确切路径时才会解析。)