« C++ 本を大人買い | メイン | ついに »
2004年06月15日
Visual C++ Toolkit 2003 の環境構築
1 なまえ:yoffy:2004/06/15 01:48:07 [りんく] [へんじ]Visual C++ Toolkit 2003 で検索して飛んでくる人が結構多くて、お望みの情報が手に入らず帰られてるのが目に見えてるので 『VC++ 2003 Professional のコンパイラが無料に!』 と 『コンパイラを新しくしても』 の続きとしてまとめておこうと思う。
ダウンロード
- Microsoft Windows Platform SDK(以下 PSDK)
- .NET Framework SDK Version 1.1(以下 .NET Framework)
- Visual C++ Toolkit 2003
- Windows Template Library 7.1(以下 WTL)
- STLport
- Boost C++ Libraries(以下 boost)
- boost-jam(以下 bjam)
展開
特に上 3 つはこれを書いている時点での公開された時系列に合わせて上から順にダウンロード&インストール。PSDK、.NET Framework、toolkit は Program Files に。WTL、STLport、boost はトップレベルに展開。bjam.exe は boost の中に入れる。
時系列に合わせてあるとパスの編集が少なくて済む。
目安として以下の階層が確認できれば OK。
\Program Files\Microsoft Visual Studio .NET 2003\
\Program Files\Microsoft SDK\
\Program Files\Microsoft Visual C++ Toolkit 2003\
\wtl71\
\STLport-4.6.2\src\
\boost_1_31_0\Jamfile
\boost_1_31_0\bjam.exe
時系列に合わせてあるとパスの編集が少なくて済む。
目安として以下の階層が確認できれば OK。
\Program Files\Microsoft Visual Studio .NET 2003\
\Program Files\Microsoft SDK\
\Program Files\Microsoft Visual C++ Toolkit 2003\
\wtl71\
\STLport-4.6.2\src\
\boost_1_31_0\Jamfile
\boost_1_31_0\bjam.exe
パスの設定
Windows XP だったら [コントロールパネル] - [システム] - [詳細設定] - [環境変数] - [ユーザー環境変数] あたりから確認できるデフォルトのパスを確認。このパネルが無かったらコマンドプロンプトで set とでも打って確認。
VC++ 6.0 を持ってるから、それに関するものは端折ってあるけど、実際はこの後ろに VC++ 6.0 の環境変数が続く感じ。DirectX SDK やら QuickTime SDK も入ってるし、D ドライブだけどあくまで参考例ってことで気にせず。とにかく lib は .NET framework を最初に持ってきて優先にすること。こうすることで.NET framework に付属してる msvcrt.lib が使えるようになる(VC++ 6.0 を持ってたりしても)。あとは path が Win64 用に通すことで nmake.exe とか使える。
これが確認できたら [プログラム] - [Microsoft Visual C++ Toolkit 2003] - [Visual C++ Toolkit 2003 Command Prompt] のバッチファイルを起動。このバッチファイルは環境変数を設定するだけだから、さっき見た所の一番最初(何よりも toolkit が最優先)に追加しといてもいい。
| include | D:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\INCLUDE;D:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\WIN64\ATL;D:\PROGRAM FILES\MICROSOFT SDK\INCLUDE\WIN64\CRT;D:\WTL71\INCLUDE;D:\Program Files\Microsoft SDK\Include\.;D:\DXSDK\INCLUDE;D:\Program Files\QTDevWin\CIncludes |
| lib | D:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\LIB;D:\Program Files\Microsoft SDK\Lib\.;D:\PROGRAM FILES\MICROSOFT.NET\SDK\V1.1\LIB;D:\DXSDK\LIB;D:\PROGRAM FILES\QTDEVWIN\LIBRARIES |
| path | D:\Program Files\Microsoft SDK\Bin\Win64\.;D:\Program Files\Microsoft SDK\Bin\.;D:\Program Files\Microsoft SDK\Bin\WinNT\. |
VC++ 6.0 を持ってるから、それに関するものは端折ってあるけど、実際はこの後ろに VC++ 6.0 の環境変数が続く感じ。DirectX SDK やら QuickTime SDK も入ってるし、D ドライブだけどあくまで参考例ってことで気にせず。とにかく lib は .NET framework を最初に持ってきて優先にすること。こうすることで.NET framework に付属してる msvcrt.lib が使えるようになる(VC++ 6.0 を持ってたりしても)。あとは path が Win64 用に通すことで nmake.exe とか使える。
これが確認できたら [プログラム] - [Microsoft Visual C++ Toolkit 2003] - [Visual C++ Toolkit 2003 Command Prompt] のバッチファイルを起動。このバッチファイルは環境変数を設定するだけだから、さっき見た所の一番最初(何よりも toolkit が最優先)に追加しといてもいい。
STLport
C:\>cd \STLport-4.6.2\src
C:\STLport-4.6.2\src>notepad ..\stlport\stl_user_config.h
C:\STLport-4.6.2\src>set MSVCDIR=C:\Program Files\Microsoft Visual C++ Toolkit 2003
C:\STLport-4.6.2\src>nmake /f vc71.mak installnotepad の箇所は stl_usr_config.h の必要そうだと思うコメントをはずす。うちの場合 MFC と PSDK を使ってるから # define _STLP_USE_MFC 1 と # define _STLP_NEW_PLATFORM_SDK 1 をコメント解除。
----- 2004/7/25 追記
製品の Visual C++ を持っていない人は DLL 版が作成できないようなので vc71.mak の
all: platform all_static all_dynamic
のうちの all_dynamic の記述を削除すること。
all: platform all_static all_dynamic
のうちの all_dynamic の記述を削除すること。
boost
C:\>cd \boost_1_31_0
C:\boost_1_31_0>set STLPORT_PATH=C:\STLport-4.6.2
C:\boost_1_31_0>set MSVCDIR=C:\Program Files\Microsoft Visual C++ Toolkit 2003
C:\boost_1_31_0>bjam -sTOOLS=vc7.1-stlport "-sVC71_ROOT=C:\Program Files\Microsoft Visual C++ Toolkit 2003" "--prefix=C:\Program Files\Microsoft Visual C++ Toolkit
2003" installATL
C:\>cd \Program Files\Microsoft SDK\src\atl
C:\Program Files\Microsoft SDK\src\atl>copy atl.mak makefile
C:\Program Files\Microsoft SDK\src\atl>nodepad makefile
C:\Program Files\Microsoft SDK\src\atl>nmake
C:\Program Files\Microsoft SDK\src\atl>nmake /D "CFG=atl - Win32 Release"
ただし、リリースビルドをするための遅延ロードライブラリ delayimp.lib が無いので、
nodepad makefile で編集して /delayload:〜 の部分を一通り削除する。これは VC++ 6.0 を持っていれば delayimp.lib を持っているはずなんだけど、PSDK のリンカと互換性の無いライブラリだから使えない。かといって VC++ 6.0 のリンカを使ってもうまくリンク出来ない。よって VC++ 6.0 を持っていてもこの方法で遅延ロードをあきらめるしかない。出来たライブラリは toolkit の lib フォルダにコピー。
急いで書いたから途中何か抜けてたらツッコミよろしく。
----- 21:00 追記
早速 STLport の config 設定が抜けてたから修正。
トラックバック
このエントリーのトラックバックURL:
http://yoffy.dyndns.org/cgi-bin/mt/mt-tb.cgi/88