Hatena::ブログ(Diary)

あまつぶ@はてなダイアリー RSSフィード

あまつぶWikiあまつぶ過去ログMacソフトWinソフト掲示板
<カレンダー>
2003 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 03 | 04 | 05 | 06 | 07 | 09 | 11 |
2011 | 02 | 07 | 08 | 11 |
2012 | 04 | 11 |
2013 | 07 | 09 | 10 |
2014 | 11 |
2015 | 11 |

<< 2008/02 >>
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29

<最近の見出し>




POPFile の Mac OS X(Panther/Tiger/Leopard/Snow Leopard/Lion/Mountain Lion/Mavericks/Yosemite)用インストーラをお探しの方は、POPFile プロジェクトのダウンロードページへ。
 | 

2008-02-21 MinGW + MSYS 環境で MeCab 0.97 をビルドする

[]MinGW + MSYS 環境で MeCab 0.97 をビルドする MinGW + MSYS 環境で MeCab 0.97 をビルドするを含むブックマーク

しばらく前に一応成功はしていたのだけど書くのが遅くなってしまった。

前に MeCab 0.96 をビルドする方法を書いたが、MeCab 0.97 はこれだけではうまくいかなかった(ビルド自体はできるのだが、実行するとエラーが出てしまう)。あまりきれいな方法ではないが動くようになったのでメモしておく。

mecab.h を修正するところまでは 0.96 と同じだが、このままビルドすると、MeCab 本体を実行した際、あるいは Perl モジュールを使った Perl スクリプトを実行した際に、

This application has requested the Runtime to terminate it in an unusual way.

Please contact the application's support team for more information.

というエラーが出てしまった。エラーメッセージの意味はよくわからないが、どうもこのエラーは Microsoft Visual C++ Runtime library が出しているらしい。

    • disable-shared オプションをつけ、DLL を作らないようにしたら MeCab 本体は問題なく動くようになったので原因はライブラリにあるのだろうと当たりをつけ、0.96 との違いを調整して原因を調べていくと、libmecab.cpp の DllMain 関数の周りにつけられた extern "C" { ... } を外せばエラーが起こらなくなることがわかった。ということで、とりあえず libmecab.cpp を、以下のように修正。

 *** mecab-0.97-original/src/libmecab.cpp	Mon Nov 26 02:27:12 2007
 --- mecab-0.97/src/libmecab.cpp	Wed Feb 13 22:11:35 2008
 ***************
 *** 50,56 ****
  #if defined(_WIN32) && !defined(__CYGWIN__)
  HINSTANCE DllInstance = 0;
  
! #ifdef __cplusplus
  extern "C" {
  #endif
    BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID) {
 --- 50,56 ----
  #if defined(_WIN32) && !defined(__CYGWIN__)
  HINSTANCE DllInstance = 0;
  
! #if defined(__cplusplus) && !defined(__MINGW32__)
  extern "C" {
  #endif
    BOOL WINAPI DllMain(HINSTANCE hinst, DWORD dwReason, LPVOID) {
 ***************
 *** 62,68 ****
      std::locale::global(loc);
      return TRUE;
    }
! #ifdef __cplusplus
  }
  #endif
  #endif
 --- 62,68 ----
      std::locale::global(loc);
      return TRUE;
    }
! #if defined(__cplusplus) && !defined(__MINGW32__)
  }
  #endif
  #endif

この変更で、C からこのライブラリを使おうとするとうまくいかないということになると思われるが、幸い MeCab 本体も Perl モジュールも C++ で書かれているので問題ないようだ(というか 0.96 の時はなかったのだから大丈夫なはず)。

Dependency Walker でできた DLL を見てみると、extern "C" を外した場合には DllMain がエクスポートされているが、つけた場合(修正していない場合)はエクスポートされていないようだった。このあたりが原因なのだと思われるが、ほかに解決策が見つからなかったのでとりあえず。もっといい方法があれば修正していきたい。

これまでの経緯を別にまとめておいた

[]毎週火曜日 毎週火曜日を含むブックマーク

1 月の末以来、毎週火曜日になるたびに「今日こそ新しい MacBook Pro が出るのではないか」と期待しているのだけど、今週で 4 週連続空振り。Mac Rumors のフォーラムを見ていると、同じような人が結構いるみたい。6 月に Montevina が出るらしいことを考えると今の時期というのは微妙なのかなとも思うのだけど、やはり期待してしまう。逆に「なにも出なければ悩まなくてすむ」という思いもあったりするのだけど。

ここのところ毎週のように、火曜日になるとオンラインのアップルストアが一時的に閉じて「ついにきたか」と期待させる。今週は iPod shuffle の値下げと 2GB モデルの追加だった。来週は iPhone SDK の発表なのだろうから、それより先なのかなぁ。

[]Battle for Wesnoth の翻訳状況 Battle for Wesnoth の翻訳状況を含むブックマーク

こちらを参照。3 月の初旬頃に 1.4 が出るらしく、3 月 2 日が一応の締め切りだそうだ。まだまだ道のりは長いけれど、シナリオ以外はなんとかしたいなぁ。

feuxfeux 2008/02/23 00:26 >新MBP
まったくです。私も毎週毎週気がかりでチェックし続けているのですが、さすがにもうこの春はないのかも…とあきらめかけています。
でもあきらめた途端に出たりするからなあ(とループ)
アップルストアでメモリを追加して見積を出すと2〜3日待ちになったりするので余計迷ったり。

amatubuamatubu 2008/02/25 23:11 > feux さん

いやー、さすがに 6 月まで出ないということはないのではないかなと思うんですが、どうなんでしょうね。
ま、とりあえずは、明日に期待です(^^;

crossingpointcrossingpoint 2008/02/27 00:38 出ましたね!新型!
http://www.apple.com/jp/news/2008/feb/26mbp.html
って!あ!石を投げないで(笑)

amatubuamatubu 2008/02/27 01:24 出ましたね〜。しかし、ほんとに MacBook と同時か〜という感じですね。ますますスペックが近くなってしまいましたし。
個人的には、今度の MacBook のスペックでグラフィックチップがオプションで選べたらそれがいいかもとか思ってしまいましたが(汗)

……メモリは別に買うとして、とりあえず 30 万かぁ。うーん……

 | 
472618