Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
216 views
in Technique[技术] by (71.8m points)

ImageMagick - "CORE_RL_magick_.dll not found" or how to install RMagick on windows with ruby 1.9.2

I'm working on a Rail3 app. After struggling for several hours and finally installing the rmagick 2.13.1 gem without errors on win7x64 / ruby 1.9.2, I've run into another error. Yeah, I've heard that rails experience in windows could be painfull...

I use carrierwave to process and upload images to AWS S3. Processing looks like

class IconUploader < CarrierWave::Uploader::Base

require 'rmagick'
include CarrierWave::RMagick
... 
process :resize_to_fit => [100, 100]
process :convert => :png
...

When I trigger file upload on my development machine, it throws me a windows popup, saying

CORE_RL_magick_.dll not found

Google wasn't really helpful on this one.

I have my PATH variable set to C:/ruby192/ImageMagick - its where I have installed ImageMagick to. And this folder has several CORE_RL dlls including the magick one. The DLL's themselves are not missing!

irb > require 'rmagick' returns true and convert -version outputs this:

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

So I have several question.

  1. How do I solve this?
  2. elseif I don't, are there any other gems and/or graphic libraries that are supported by both windows and heroku?
  3. else maybe there is a way to configure carrierwave, not to process images in dev environment

So far I've tried ImageMagick v 6.6.9 32bit dll, which gives the CORE_RL dll error, 64 bit static, which doesn't have dev headers to compile the rmagick gem, and 64 bit dynamic, which gives me tonns of undefined reference errors during the gem compilation, every test, except the first one:

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

Thanks everyone.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I've finally managed to install ImageMagick and build the RMagick gem and make it all work. Hooray.

It seems like the problem was in the DLL itself. When I tried to registed it, windows gave me a nice error about a problem with the dll.

So my way of solving all the issues is:

  1. Go here

  2. Download ImageMagick 6.6.1-10 32bit dynamic or any other version except the currently latest release 6.6.9, which has some DLL issues

  3. Install it with options: Add to PATH and development headers. Installation path should not contain spaces. After the installation it should give you a message box about succesful dll registration.

  4. In the command line type convert -version to check if everything works. It should print something like:

    Version: ImageMagick 6.6.1-10 2010-05-15 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC Features: OpenMP

  5. Install the DevKit if you haven't already.

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

It should print

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...

And after a few minutes if everything goes right, you should see

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

And that's it. Hope this saves somebody from wasting several hours in frustration.

Just two more links that were helpful: 1 and 2 if you still can't install


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...