GDAL库只在默认位置查找UnixImageIO框架?

时间:2015-01-27 00:16:59

标签: c++ xcode macos frameworks gdal

我正在使用适用于Mac OSX的GDAL 1.11完整版本:http://www.kyngchaos.com/software/frameworks

我正在/ Applications中安装我的.app软件包(或者用户通过拖放.dmg将其安装在那里),我不希望用户必须安装任何东西到/库/框架。

但是,GDAL库中的某些内容似乎将/Library/Frameworks/UnixImageIO.framework引用为绝对路径,并且我还没有找到一种方法来告诉它引用它框架从我的.app包中的位置改为

结果是某些文件(例如.tif文件)未正确处理(例如,当/Library/Frameworks/UnixImageIO.framework不存在时,我无法获得地理参考.tif文件的边界世界矩形,但是当/Library/Frameworks/UnixImageIO.framework存在时可以得到它。

我查看了QGIS安装程序,但这需要您明确地将GDAL和UnixImageIO安装到/ Library / Frameworks,这样做没有帮助。

GDAL的Mac版本由William Kyngesburye完成,并不是官方GDAL版本的一部分,但我无法找到直接与Kyngesburye取得联系的方法,我认为有人可能会遇到此问题问题

1 个答案:

答案 0 :(得分:0)

以下是我从William Kyngesburye那里得到的答案:

是的,整批框架都是为absolue路径设置的。因此,不仅GDAL引用了UnixImageIO(和SQLite3),当您编译链接到它们的应用程序时,它还会将绝对路径链接到框架。

在您的应用程序和任何捆绑框架中更改此标准的标准方法是使用带有-change选项的install_name_tool和特殊的相对路径关键字@loader_path:

install_name_tool -change / original / path @ loader_path / relative / path / path / to / bundled / framework / binary

/ original / path将是框架二进制文件的/ Library / Frameworks路径。

相对路径是相对于框架中的二进制文件,因此您需要退出几个../

当然,您的应用应该知道如何将GDAL重定向到其支持文件的捆绑副本,或者它会尝试在已编译的/ Library / Frameworks路径中找到它们。 UnixImageIO框架还有geotiff库的支持文件,如果使用的话必须重定向。