須藤です。

In <519C3AF5.5010904 / moji.gr.jp>
  "[ruby-list:49397] Re: cairo 1.12.5 x86-mingw32 で cairo.so が見つからない" on Wed, 22 May 2013 12:26:50 +0900,
  "5.5" <5.5 / moji.gr.jp> wrote:

> 原因が半分分かりました。cairo.so が見つからないのではなく,
> 見つかってロードするときにコケているみたいです。
> 
> lib/cairo.rb の 42 行目から
> 
> begin
>   major, minor, _ = RUBY_VERSION.split(/\./)
>   require "#{major}.#{minor}/cairo.so"
> rescue LoadError
>   require 'cairo.so'
> end
> 
> となっていますね。
> 
> まず require "#{major}.#{minor}/cairo.so" で cairo.so
> をロードするときに
> 
>   127:指定されたプロシージャが見つかりません。
> 
> が出ます。これも LoadError になるので,rescue で捕捉されて
> require 'cairo.so' を試みるのですが,これでは cairo.so が
> 見つけられないため,最終的に
> 
>   cannot load such file
> 
> になる,ということでした。
> 
> 「指定されたプロシージャが見つかりません。」っていうのは何か
> DLL が足りないとかそういうことでしょうか?

はい、(あんまり知らないんですが)私が知っている範囲ではDLL
が足りないときにでます。

> なお,cairo.so の絶対パスを指定して require するだけのスクリ
> プトを書いてみたところ,
> 
>   126:指定されたモジュールが見つかりません。
> 
> と,違うエラーが出ました。

あぁ、cairo.soが使うDLLがあるフォルダをPATH環境変数に入れ
ておかないと見つけてもらえないのです。DLLは
#{GEM_HOME}\gems\cairo-1.12.5-x86-mingw32\vendor\local\bin
にあるのですが、cairo.rbの最初の方でそれをPATH環境変数に入れ
ています。

cairo.soの絶対パスを指定して、ということなので↑の処理が入っ
ていないのだと思います。なので、違うエラーになったのかなぁと
思います。