gpt4 book ai didi

macos - Mac OS 上的 ImageMagick 部署

转载 作者:行者123 更新时间:2023-12-01 10:01:06 25 4
gpt4 key购买 nike

我正在尝试使用我自己的软件部署 ImageMagick。在 Windows 上,我刚刚将所有核心 dll 和编码器 dll 包含在 exe 路径中,并且运行良好。但是在 mac os 上我遇到了编码器的问题。我通过 macports 安装了 ImageMagick,并在 CMake 的帮助下找到了它。 CMake 完成了复制和修复我链接的所有核心库的所有工作。然后我复制了所有的编码器库并修复了它们,但是当我启动我的应用程序时它就是找不到任何编码器。所以我想知道我在那里错过了什么。

注意:如果我没有修复任何路径,它运行良好。只有我的部署有问题。也许我应该包含某种配置文件?

附言我在 MacOS bundle 子文件夹中的可执行文件附近拥有所有 ImageMagick 库,包括编码器 SO。

最佳答案

如何在您的包中设置 MAGICK_CODER_MODULE_PATH?

请看这里:http://www.imagemagick.org/script/resources.php

编辑:

改进信息:

最初在我们自己的应用程序包中嵌入 IM 时,我们遇到了三个问题:

  1. 我们的应用程序和 IM 动态库未找到引用的 IM 动态库,
  2. IM 找不到它的配置文件,
  3. IM 未找到编码器(No Decode Delegate 错误)

我们尝试使用 install_name_tool 更改 dylib 中的硬编码路径,但最终在将 IM 移动到不同目录并进行测试时进行了一些测试

convert -debug configuration 

我们发现以上三个问题都可以通过在运行convert之前在终端控制台中至少设置和导出这三个环境变量来解决:

DYLD_LIBRARY_PATH
MAGICK_CONFIGURE_PATH
MAGICK_CODER_MODULE_PATH

有了这个经验,我们回到了我们的 bundle 并在开始时尝试使用 Info.plist 字段来设置这些变量,但它似乎没有用 - 可能是因为在内部创建 IM 的路径时出现问题束相关。

最后,我们创建了一个简单的 sh 脚本并将其放入我们的包中,并将该包配置为运行该脚本而不是主应用程序:

#!/bin/sh
CURR_DIR="$( cd -P "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
IMAGE_MAGICK_PATH=$CURR_DIR/../Resources/ImageMagick

export DYLD_LIBRARY_PATH=$IMAGE_MAGICK_PATH/lib
export MAGICK_CONFIGURE_PATH=$IMAGE_MAGICK_PATH/lib/ImageMagick-6.8.0/config
export MAGICK_CODER_MODULE_PATH=$IMAGE_MAGICK_PATH/lib/ImageMagick-6.8.0/modules-Q16/coders

# run application
exec $CURR_DIR/OurAppName

让它工作的关键是正确获取应用程序包的 CURR_DIR(感谢 this post)。

从我们的测试中可以看出,以这种方式设置环境变量使它们仅对该应用程序执行上下文可见 - 即当我们使用 bundle 启动我们的应用程序时,打开终端并输入

env

输出中缺少上述三个变量。

希望这能帮助其他人节省几天的研究时间,省去他们脑袋里的头发;)

关于macos - Mac OS 上的 ImageMagick 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16007654/

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