[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 メーリングリストの案内