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

11

我正在开发一个基于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
...

当我在我的开发机上触发文件上传时,它会弹出一个 Windows 弹窗,显示:

找不到 CORE_RL_magick_.dll

谷歌对此并没有真正有用的建议。

我的 PATH 变量设置为 C:/ruby192/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

我有几个问题。

  1. 如何解决这个问题?
  2. elseif 如果不能,是否有其他支持Windows和Heroku的宝石和/或图形库?
  3. else 或者,有没有办法配置carrierwave,在开发环境中不处理图像?

到目前为止,我尝试了ImageMagick v 6.6.9 32位dll,但出现了CORE_RL dll错误;64位静态版本没有dev头文件来编译rmagick gem;64位动态版本在gem编译期间给我大量的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...

谢谢大家。

4个回答

18

我终于成功安装了ImageMagick并构建了RMagick gem,使其全部正常工作。太好了。

似乎问题在DLL本身上。当我试图注册它时,Windows给了我一个关于DLL问题的提示错误。

所以我的解决方法是:

  1. 前往这里

  2. 下载ImageMagick 6.6.1-1032位动态版本或任何其他版本除了当前最新版本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...

几分钟后,如果一切正常,您应该会看到

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...

就是这样,希望这能够避免某些人浪费数小时的挫败感。

还有两个链接可能会有帮助:12,如果你仍然无法安装。


谢谢,伙计,很高兴你解决了它。Heroku也有IM,我很惊讶。我之前不知道,所以谢谢你提醒我 :) - 2potatocakes
你真是救了我的一天。非常感谢,我尝试了很多教程,只有这个逐步指南对我有效。<3 - Lucas
很高兴这对你有帮助,Lucas :) 其实,最近我也保存了我的文件,当我不得不重新安装Windows和所有的Ruby/Rails工具时。 - bassneck
有趣的事实:它只在一台计算机上运行,而另一台计算机却不行(两台计算机都使用相同版本的Ruby/Rails/Windows...)。其他链接也没有帮助。难过的表情 - Lucas
我不得不用 gem update --system 更新 RubyGem。至少,在运行Rails服务器时,一切都正常,但是我会收到这个警告消息:注意:Gem.source_index已被弃用,请使用Specification。它将在2011-11-01或之后被删除。 - Lucas

2

安装这个东西真是让人头疼。此刻,我不得不重新安装Ruby、Rails、Devkit和ImageMagick。你最好也这么做,选择最新版本的所有软件,除了Rails,除非你喜欢3.1版本。目前我正在使用最新版本:

ImageMagick-6.7.2-1-Q16-windows-dll - Win32 dynamic at 16 bits-per-pixel

DevKit-tdm-32-4.5.2-20110712-1620-sfx

rubyinstaller-1.9.2-p290

Rails 3.0.9

我的系统:

Windows 7, x64

我的路径与通常答案有些不同。

我的路径为c:/ImageMagick。

gem install rmagick --platform=ruby -- --with-opt-lib=c:/ImageMagick/lib --with-opt-include=c:/ImageMagick/include

我先安装了Ruby,并勾选了所有选项,然后安装了ImageMagick并勾选了"关联路径选项"和"头文件"。

接着轻松设置了devkit:

1) cd c:\DevKit
2) ruby dk.rb init
3) ruby dk.rb install

然后,在devkit(c:/devkit)中执行以下步骤,安装时无错误:

gem install rmagick --platform=ruby -- --with-opt-lib=c:/ImageMagick/lib --with-opt-include=c:/ImageMagick/include

如果你仍然存在问题,也许这个链接可以帮到你。我尝试了其中的步骤,但是对于设置环境和使第五步生效不够熟悉:http://www.waydotnet.com/blog/2010/02/rmagick-on-ruby-1-9-1-i386-mingw32-work-d/
我认为第五步可以改为在Devkit中完成,你可以试试看,祝好运!

1

我很确定你在尝试在Heroku上运行它时也会遇到问题,因为RMagick只是一个与ImageMagick处理库进行接口的gem。 ImageMagick还需要在本地机器上安装,但我不知道你是否能在Heroku上完成这个操作。 ImageMagick安装包含了你所需要的缺失的.dll文件。我经常在本地项目中使用它。以下是链接:

Link

我建议从上面的链接中安装64位的“静态”二进制文件。我曾经尝试过使用dll版本时遇到了一两个问题。

无论如何,请下载并安装它,然后将您的C:\ Program Files \ ImageMagick-6.5.6-Q8(或任何您安装到的位置)路径添加到PATH环境变量中。

然后,您应该能够正确使用您的RMagick gem。

祝一切顺利。


嘿,2potatocakes) 我可能应该更清楚地指出 - 我已经安装了imagemagick。我已经下载了32位dll版本。在你的帖子之后,我尝试了64位的静态和动态版本。第一个没有dev头文件,所以我无法编译rmagick gem。第二个在编译gem时给我未定义的引用错误。据我所知,Heroku在他们的服务器上安装了IM。 - bassneck

1

我按照这篇文章的步骤操作,但仍然遇到了很多未定义的错误。如果你也是这种情况,你可以尝试安装32位版本的imagemagick,即使你的操作系统是64位的。这对我有用。 你可以在这里阅读更多信息:rmagick not building on windows 7 undefined reference errors


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接