[#46732] ヒアドキュメント内の変数展開が正常に行われない — ShingoKintaka <kamuycikap@...>

Ruby  :1.8.7 (Ubuntu9.10)

12 messages 2010/01/05
[#46733] Re: ヒアドキュメント内の変数展開が正常に行われない — rubikitch@... 2010/01/06

From: ShingoKintaka <kamuycikap@tulip.ocn.ne.jp>

[#46800] DLモジュールの使い方 — kouichi_someya@...

染谷と申します。

12 messages 2010/01/20
[#47678] プログラム実行時に「[BUG] Segmentation fault」 — 染谷 康一 <kouichi_someya@...> 2010/12/09

染谷と申します。

[ruby-list:46829] Exerbでexe化したiconvを使ったスクリプトでエラーが発生する

From: Nakamatsu Shinji <snaka.gml@...>
Date: 2010-01-30 11:14:03 UTC
List: ruby-list #46829
Ruby-listの皆さんこんにちは。

snakaと申します。
表題のとおりの現象に遭遇したのですが、原因などご存知の方がいれば
教えてください。

現象の詳細は以下のとおりです。

まず、以下のようなRubyスクリプトを作成しインタプリタ上で実行可能で
あることを確認しました。

--- 元のスクリプト ---
require 'iconv'
UTF16toUTF8 = Iconv.new('utf-16be', 'utf-8')
p UTF16toUTF8.iconv('no bom')
----------------------------

次に上記スクリプトを、exerbコマンドでexe化しました。
そのときに使用したレシピファイルは以下のとおりです。
--- レシピファイル ---
# Generated by mkexy
# on 2010-01-29 00:22

general:
  startup: test.rb
  core: cui
  kcode: none

file:
  test.rb:
  iconv.so:
    file: C:/PROGRA~1/ruby-1.8/lib/ruby/1.8/i386-mswin32/iconv.so
    type: extension-library
  iconv.dll:
    file: C:/PROGRA~1/ruby-1.8/bin/iconv.dll
----------------------------

最初、mkexyコマンドで生成したレシピファイルには iconv.dll が含まれて
ませんでしたが、その状態でexeを実行すると、以下のエラーが出たため
加えてみました。

--- エラー(1) ---
test.rb:1:in `require': Win32API Error #126 --- 指定されたモジュールが見つかりません。
 (ExerbRuntime::Error)
        from test.rb:1
--------------------

すると、以下のようなエラーに変りました。
--- エラー(2) ---
test.rb:1:in `require': No such file to load -- iconv (LoadError)
        from test.rb:1
--------------------

ここでしばらく試行錯誤を繰り返したところ、元のスクリプトで"iconv"のrequireしている
箇所を"iconv.so"と拡張子付きで指定することで解決することができました。

--- 変更後のスクリプト ---
require 'iconv.so'
UTF16toUTF8 = Iconv.new('utf-16be', 'utf-8')
p UTF16toUTF8.iconv('no bom')
----------------------------------

一応、問題は回避できたんですが、根本原因がわからないのも気持ち悪いのでMLに
流してみました。
もし原因がわかるようでしたら教えてください。

環境は以下のとおりです。
- OS: Windows XP SP3
- Ruby: ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32]

In This Thread

Prev Next