2007年12月14日

MinGWでmsvcr71.dllを使う方法

前回は、Windows向けPython2.5で使われているのはmsvcr71.dllだということ。そして現在で回っているマイクロソフト製のコンパイラでは、もう世代が変わってしまっていて、そのmsvcr71.dllにリンクするプログラムを作るのはとても大変だということを書いた。

マイクロソフト製以外にもコンパイラはある。Pythonの向けのパッケージはMinGW GCCを使ってもコンパイルできる。これを使うとmsvcr71にリンクするプログラムを作ることができる。

Python限定の話題ではないが「MinGW GCCでlibcとしてmsvcrt.dll以外を使うまとめ」で詳しくまとめられている。MinGW GCCは標準でmsvcr71.dllではなく、msvcrt.dllへリンクするように作られているので、ちょっと工夫しないといけない。その工夫の仕方が書いてある。

記事の最後の方の「もっと根本的に、specファイルを書き換える方法」で紹介されているspecファイルを書き換えたものを用意して、それをコンパイル時に-specで指定する方法が、一番無難な方法じゃないかと思う。常にmsvcr71.dllへリンクしたものを作るというのならば、「C:/MinGW/lib/gcc/mingw32/3.4.5/(バージョン番号は適宜置き換え)」にあるspecsファイル中の-lmsvcrtを-lmsvcr71に置き換えてしまえば、煩わしくなくなるだろう。

ただ、ためしにmecabソースをその設定でビルドしてみるとctype.hの記述が原因でエラー終了してしまった。すべてがうまくいくというわけでもないみたい。

MinGW GCCではVCとはまた別のライブラリを用意しないといけない。VCのライブラリからの変換の手順はいろんなところで紹介されているので、それにしたがって作ればいい。そもそもMinGW環境そのものの構築の仕方は、面倒なので書いていないが、これも検索すれば見つかる。


posted by takayan at 03:29 | Comment(0) | TrackBack(0) | プログラミング | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。