ImageMagick - "未找到CORE_RL_magick_.dll"或如何使用ruby 1.9.2在Windows上安装RMagick

bas*_*eck 12 ruby windows ruby-on-rails rmagick imagemagick

我正在开发一款Rail3应用程序.经过几个小时的努力,最后在win7x64/ruby​​ 1.9.2上安装了rmagick 2.13.1 gem而没有错误,我遇到了另一个错误.是的,我听说过在windows中使用rails可能会很痛苦......

我使用carrierwave处理图像并将其上传到AWS S3.处理看起来像

class IconUploader < CarrierWave::Uploader::Base

require 'rmagick'
include CarrierWave::RMagick
... 
process :resize_to_fit => [100, 100]
process :convert => :png
...
Run Code Online (Sandbox Code Playgroud)

当我在我的开发机器上触发文件上传时,它会抛出一个Windows弹出窗口,说

找不到CORE_RL_magick_.dll

谷歌对此并不是很有帮助.

我将PATH变量设置为C:/ ruby​​192/ImageMagick - 我已经安装了ImageMagick.这个文件夹有几个CORE_RL dll,包括magick.DLL本身不会丢失!

irb > require 'rmagick'返回true并convert -version输出:

Version: ImageMagick 6.6.9-6 2011-04-14 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features: OpenMP
Run Code Online (Sandbox Code Playgroud)

所以我有几个问题.

  1. 我该如何解决这个问题?
  2. elseif 我没有,是否还有Windows和heroku都支持的其他宝石和/或图形库?
  3. else 也许有一种方法可以配置carrierwave,而不是在开发环境中处理图像

到目前为止,我已经尝试了ImageMagick v 6.6.9 32bit dll,它给出了CORE_RL dll错误,64位静态,没有用于编译rmagick gem的dev头,以及64位动态,这给了我很多undefined reference错误.宝石编译,每个测试,除了第一个:

checking for snprintf() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... yes
checking for AcquireImage() in assert.h,ctype.h,stdio.h,stdlib.h,math.h,time.h,stdint.h,sys/types.h,wand/MagickWand.h... no
and so on...
Run Code Online (Sandbox Code Playgroud)

感谢大家.

bas*_*eck 18

我终于设法安装ImageMagick并构建RMagick gem并使其全部工作.万岁.

似乎问题出在DLL本身.当我试图注册它时,Windows给了我一个关于dll问题的错误.

所以我解决所有问题的方法是:

  1. 这里
  2. 下载ImageMagick 6.6.1-10 32位动态或除当前最新版本6.6.9之外的任何其他版本,其中包含一些DLL问题
  3. 使用选项安装它:添加到PATH和开发标题.安装路径不应包含空格.安装后,它会给你一个关于成功dll注册的消息框.
  4. 在命令行中键入convert -version以检查一切是否正常.它应该打印如下:

    版本:ImageMagick 6.6.1-10 2010-05-15 Q16 http://www.imagemagick.org 版权:Copyright(C)1999-2010 ImageMagick Studio LLC特点:OpenMP

  5. 如果您还没有安装DevKit.

  6. 安装rmagick gem: gem install rmagick --platform=ruby -- --with-opt-lib=c:/ruby192/ImageMagick/lib --with-opt-include=c:/ruby192/ImageMagick/include

它应该打印

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Run Code Online (Sandbox Code Playgroud)

几分钟后,如果一切顺利,你应该看到

Successfully installed rmagick-2.13.1
1 gem installed
Installing ri documentation for rmagick-2.13.1...
Installing RDoc documentation for rmagick-2.13.1...
Run Code Online (Sandbox Code Playgroud)

就是这样.希望这可以节省一些人在挫折中浪费几个小时.

还有两个有用的链接:12如果仍然无法安装