Windowsでtthttpd(tinytinyhttpd)をコンパイル(VS2008編)

夏休みなどで間が空いてしまいましたが、http://d.hatena.ne.jp/smeghead/20090806/tthttpdwin32 の続きをやってみました。

mattnさんにアドバイスを貰えました。

mingw32からリンクされるどのモジュールがmsvcr70.dll/msvcr71.dllにリンクされているかまだ分かっていませんが、そのDLLをmsvcr70.dll/msvcr71.dllに依存しない様にビルドし直すか、前述のパッチを入れるかになります。

なお、Microsoft Visual C++でコンパイルすると、上記のエラーが出ない事は確認出来ています。

Windowsでtthttpd(tinytinyhttpd)をコンパイル – 週記くらい

パッチを探したり、VS2003,VS2005でコンパイルしたりしましたが、と同じ現象が発生していました。

ゆきずまったので、VS2003, VS2005をアンインストールして、VC++ 2008 Express Editionでのコンパイルをしてみることに。

まず、Microsoftのサイトから、Visual C++ 2008 Express Editionをダウンロードしてインストールして、下のバッチファイルでコンパイルしました。コマンドプロンプトで実行できるように、make -f Makefile.mvc の内容を展開しただけのものです。

"C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl" /nologo /MT /W3 /UUNICODE /U_UNICODE /EHsc -c httpd.cxx
"C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl" /nologo /MT /W3 /UUNICODE /U_UNICODE /EHsc -c utils.cxx
"C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl" /nologo /MT /W3 /UUNICODE /U_UNICODE /EHsc -c main.cxx
"C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/link" /nologo /out:tthttpd.exe main.obj httpd.obj utils.obj /NODEFAULTLIB:libc.lib /nodefaultlib:libcp.lib

いざ、試してみましたが、エラーダイアログが出ます。エラーが出るタイミングは、その時によって変わったりします。1ページ目のHTMLの場合もあるし、3ページ目のHTMLを表示した場合のこともあります。

---------------------------
tthttpd.exe - アプリケーション エラー
---------------------------
"0x004227f0" の命令が "0x00000000" のメモリを参照しました。メモリが "read" になることはできませんでした。
プログラムを終了するには [OK] をクリックしてください
---------------------------
OK
---------------------------

msvcr70.dll/msvcr71.dlで発生すると教えてもらった下のエラーは発生しなくなっている模様です。

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

他のパソコンでコンパイルを試してみた方がいいかもしれない。ノートパソコンに付いてきたvistaをvmwareに入れるか。

続く

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください