[ C++で開発 ]

Visual C++ Toolkit 2003

Microsoftがコマンドライン環境だけのVisual C++を無償リリースしました。

セットアップ

入手

Visual C++ Toolkit 2003の入手

MSDNのVisual C++ Developer Centerの以下URLから入手します。

http://msdn.microsoft.com/visualc/vctoolkit2003/

ファイル名:VCToolkitSetup.exe
サイズ:約32MB

Windows Platform SDKの入手

標準C/C++の範疇でプログラムを作成する分には、一部例外[*1]を除き上記Toolkitだけで対応できますが、Win32 API等を使用したWindowsアプリケーションを作成するためには、別途Windows Platform SDKをインストールする必要があります。

上記Visual C++ Toolkit 2003のページの"Related Downloads"にある"Microsoft Windows Platform SDK"のリンクを辿るか以下のURLへ行きます。なお、ブラウザはInternet Explorerを使う必要があります。

http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

2005.4現在、Platform SDKには、以下の種類があります。

  1. Windows Server 2003 SDK
  2. Windows Media SDK
  3. Windows XP SP2 SDK

ここでは、1.の"Windows Server 2003 SDK"を使用します。XPだとnmake.exeなど必須コマンドが含まれていません。

[*1] 一部例外
Visual C++ Toolkit 2003には、静的リンク用の標準C/C++ライブラリは含まれていますが、動的リンク用の標準C/C++ライブラリが含まれていません。したがって、静的リンクライブラリを使用するか、別途動的リンクライブラリを入手する必要があります。
標準C++ライブラリの種類とVC++ Toolkitに含まれるか否か
種類 ファイル名 コンパイル
スイッチ
VC++ Toolkitには
シングルスレッド静的リンク用 C
libc.lib
/ML
あり
C++
libcp.lib
シングルスレッド静的リンク用(デバッグ版) C
libcd.lib
/MLd
あり
C++
libcpd.lib
マルチスレッド静的リンク用 C
libcmt.lib
/MT
あり
C++
libcpmt.lib
マルチスレッド静的リンク用(デバッグ版) C
libcmtd.lib
/MTd
あり
C++
libcpmtd.lib
マルチスレッド動的リンク用インポートライブラリ C
msvcrt.lib
(msvcr71.dll)
/MD
なし
C++
msvcprt.lib
(msvcp71.dll)
マルチスレッド動的リンク用インポートライブラリ(デバッグ版) C
msvcrtd.lib
(msvcr71d.dll)
/MDd
なし
C++
msvcprtd.lib
(msvcp71d.dll)

なお、msvcr71.dllおよびmsvcp71.dllは、VC++ Toolkit 2003に含まれます。msvcr71d.dllは、WINDOWS\Microsoft.NET\Framework\v1.1.4322フォルダにありましたが、msvcp71d.dllは見当たりません。

マルチスレッド動的リンク用のライブラリの入手

標準Cライブラリの入手方法のひとつとして、Microsoft .NET Framework SDK(無償)から取り出すことができます。

MicrosoftのWebサイトから、Microsoft .NET Framework Software Development Kitを入手し、インストールします。インストール後、以下のディレクトリに必要なライブラリファイルが置かれています。

C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib
    msvcrt.lib    msvcrtd.lib

環境変数LIBに上記ディレクトリを追加しておきます。

標準C++ライブラリは入手方法が見当たらないため、msvcp71.dllから生成することにします。以下のURLにある情報に基づいて記述しています。

http://libsh.org/win32/build.html

以下のようにコマンドを実行します。なお、sedは標準ではWindowsに入っていないので、CygwinのsedへのPATHを通しておく等をしておきます。

C:\> cd Program Files\Microsoft Visual C++ Toolkit 2003\bin
C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin> echo LIBRARY msvcp71.dll > msvcprt.def
C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin> echo EXPORTS >> msvcprt.def
C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin> dumpbin /exports msvcp71.dll | 
  sed -nf exports.sed >> msvcprt.def
C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin> lib /def:msvcprt.def /machine:x86
exports.sed
/[      ]*ordinal hint/,/^[     ]*Summary/{
  /^[   ]\+[0123456789]\+/{
    s/^[        ]\+[0123456789]\+[ \t]\+[0123456789ABCDEFabcdef]\+[     ]\+[0123456789ABCDEFabcdef]\+[  ]\+\(.*\)/\1/p
  }
}

生成されたmsvcprt.libは、Program Files\Microsoft Visual C++ Toolkit 2003\lib の下にコピーします。

インストール

Visual C++ Toolkit 2003のインストール

ここでは、インストール先ディレクトリを、D:\Program Files\Microsoft Visual C++ Toolkit 2003とします。

Windows Platform SDKのインストール

Windows Server 2003 SDKのSDK Coreだけ入れています。ここではインストール先ディレクトリを、D:\Program Files\Microsoft SDKとします。

環境設定

コマンドライン環境なので、環境変数等をいろいろ設定する必要があります。

コマンドライン環境

Visual C++ Toolkit 2003をインストールした際に、環境設定を行うバッチファイルが含まれています。

<Visual C++ Toolkit 2003インストールディレクトリ>\vcvars32.bat

環境変数設定を行うショートカットの作成

コマンドプロンプト(cmd.exe)上で毎回上記のバッチファイルを実行するのは面倒なので、コマンドプロンプトのショートカットを実行時に自動的にバッチファイルを実行するように設定します。ショートカットのリンク先を以下のようにします。(D:\Program Files\Microsoft Visual C++ Toolkit 2003にVC++をインストールしていた場合)

%SystemRoot%\system32\cmd.exe /k "D:\Program Files\Microsoft Visual C++ Toolkit 2003\vcvars32.bat"

Windows Platform SDKの環境設定を追加する

上述のvcvars32.batは、標準C/C++プログラムに必要な設定しか記述されていません。そこで、Windows Platform SDKの設定をvcvars32.batに追加します。

vcvars32withSDK.bat
@echo off

Set PATH=D:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;%PATH%
Set INCLUDE=D:\Program Files\Microsoft Visual C++ Toolkit 2003\include;%INCLUDE%
Set LIB=D:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;%LIB%

REM add for Platform SDK
set CPU=i386
set MSSdk=D:\Program Files\Microsoft SDK
set LIB=%MSSdk%\Lib;%LIB%
set INCLUDE=%MSSdk%\Include;%INCLUDE%
set TARGETOS=WINNT
set APPVER=5.0
set PATH=%MSSdk%\Bin;%MSSdk%\Bin\winnt;%PATH%;%MSSdk%Bin\Win64

REM add for .NET Framework SDK
set LIB=%LIB%;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib
注記1
PATHに、%MSSdk%\Bin\Win64を追加していますが、これはcvtres.exe、nmake.exeを利用するためです。なぜか普通のBinには入っていないのです。32bitプロセッサ機でも実行可能のようです。ただし、Win64ディレクトリにある他のDLLファイル等はIA-64用なので、環境変数PATHの一番最後に指定するようにしています。

コンパイル・リンク方法

コンパイル方法

clコマンドでコンパイルを行います。

E:\ex> cl /c windows_ex.c
E:\home\toru\study\cxxw\opengl\ex2>cl /c wgl_window_ex1.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3052 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

window_ex.c

E:\ex> 

主要なコマンドラインオプション

リンク方法

linkコマンドでリンクを行います。

Windowsアプリケーション

Windowsアプリケーションをリンクする場合、user32.lib、kernel32.lib、gdi32.lib等をリンクに加えます。

E:\ex> link /OUT:windows_ex.exe windows_ex.obj user32.lib kernel32.lib gdi32.lib
Microsoft (R) Incremental Linker Version 7.10.3052
Copyright (C) Microsoft Corporation.  All rights reserved.


E:\ex>