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に入れるか。
続く