[Namazu-devel-ja 1435] Re: Windows Vistaでの動作確認

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2007年 1月 16日 (火) 13:05:19 JST


寺西です。

Tadamasa Teranishi wrote:
> 
> MSVCRT.DLL の __getmainargs をテストするプログラムを書いたところ、
> 今回と同じ振る舞いをすることを確認しました。
> 
> 単純に Vista のバグなんではないかと思うですが、トリキーな
> __getmainargs を使っている MinGw 側の問題ということになるのかも
> しれません。

その後、MinGWにはlibmsvcr71.a他、インポートライブラリが用意されてる
ことが分かりました。このため -lmsvcr71をつければ今回の不具合は回避
できることがわかりました。 

MSVCRT のインポートライブラリには、 

libmsvcr70.a 
libmsvcr70d.a 
libmsvcr71.a 
libmsvcr71d.a 
libmsvcr80.a 
libmsvcr80d.a 

が用意されています。 
とりあえず libmscr71.a を使ったところ単純なプログラムでは問題が
解決しました。

しかし、namazu.exe の場合は

C:\> objdump -p namazu.exe | grep dll 
DLL Name: KERNEL32.dll 
DLL Name: msvcrt.dll 
DLL Name: msvcr71.dll 
DLL Name: msvcrt.dll 

のように msvcrt.dll もリンクされてしまっています。
gcc のspecsファイルを書き換えても msvcrt.dll がリンクされてしまいます。

両方リンクされていると、spawn で(メモリ関係の)不具合が生じるようで、
実行途中で落ちちゃってます。

# もうちょっとというところで、アウトでした。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-devel-ja メーリングリストの案内