gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:38:35 24 4
gpt4 key购买 nike

OS X 优胜美地 10.10.5Xcode 6.4

背景:我需要使用 OpenGL 加载库,例如 GLEW,因为我的电脑不支持我的 OpenGl 版本学习。所以,我下载了 GLEW-zip 文件并使用 ma​​ke 安装了动态库。

现在:我正在尝试在 Xcode 中使用此动态链接库 (libGLEW.1.13.0.dylib),但出现以下错误“ld: library not found for -lGLEW”。但是,我已经告诉 Xcode 在哪里可以找到它:

  1. 首先,将 /usr/lib/libGLEW.1.13.0.dylib 添加到项目的构建 Phases -> Link With Binary Libraries
  2. 然后,将/usr/lib 添加到项目的Build Settings -> Library Search路径。
  3. 最后,添加包含文件:/usr/include 到项目的 Build Settings -> Header Search路径

是什么原因或可能导致此问题?


已解决:

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

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

最佳答案

我认为问题的根源在于您将 GLEW 安装到了/usr/lib 中。通常,/usr/lib 应该保留给系统库。第三方库应该去别的地方,比如/usr/local/lib。 GLEW 构建系统可能允许您在配置或“安装”期间指定/usr/local 的“前缀”。您必须查阅其文档。

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

显然,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib 不包含您所使用的 libGLEW.1.13.0.dylib重新尝试链接到。因此出现链接错误。

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

关于c++ - 为什么 Xcode 无法找到 GLEW 动态库,即使它已列在搜索路径中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32683749/

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