WDK 7.1を使ってVisual C++ 再頒布可能パッケージを必要としない実行ファイルをビルドする

Visual Studio (VC++)で既定の /MD オプション付きでビルドするとVisual C++ 再頒布可能パッケージを必要とする実行ファイルが出来上がります。

/MT オプションに変更することでCランタイムが静的リンクされ、Visual C++ 再頒布可能パッケージを必要としない実行ファイルを作成することもできます。しかし、Cランタイムを静的リンクすると実行ファイルのサイズが大きくなってしまいます。

Windows Driver Kit 7.1に含まれているインポート・ライブラリー(msvcrt.lib)をリンクすると、 Cランタイム(msvcrt.dll)が動的リンクされます。msvcrt.dll はWindowsに標準で含まれているためVisual C++ 再頒布可能パッケージを追加インストールしなくてもプログラムを実行できるようになります。

Windows Driver Kit 7.1 をインストールする

Windows Driver Kit Version 7.1.0 にアクセスして Download をクリックすると GRMWDK_EN_7600_1.ISO のダウンロードが始まります。

GRMWDK_EN_7600_1.ISO のダウンロードが完了したらマウントしてエクスプローラーで開いて、KitSetup.exe を実行します。

フィーチャーの選択では少なくとも Build EnvironmentTools の2つにはチェックを入れて OK をクリックします。

インストール・パスはデフォルトのままで構いません。OK をクリックします。

ライセンスへの同意確認が表示されます。ライセンスをよく読んで同意する場合は左下の I Agree にチェックを入れて OK をクリックします。

ファイルのコピーが始まるのでしばらく待ちましょう。ファイルのコピーが完了したら Finish をクリックします。

これでWindows Driver Kit 7.1のインストールは完了です。

環境変数を設定してCコンパイラを使えるようにする

Windows Driver Kit 7.1にはライブラリーやヘッダーファイルだけでなく、Cコンパイラも含まれています。環境変数を設定して Cコンパイラを使えるようにしてみます。

コマンドプロンプトを起動して以下のSETコマンドを実行していきます。バッチファイルにまとめておくと便利ですよ。

  • 先頭の SET DDK= はインストールした実際のパスに合わせて適宜変更してください。
  • ビルドするバイナリのビット数に合わせて下記のどちらか一方を実行します。
x86バイナリ(32ビット)をビルドする場合
SET DDK=C:\WinDDK\7600.16385.1 SET PATH=%DDK%\bin\x86\x86;%DDK%\bin\x86;%PATH% SET INCLUDE=%DDK%\inc\crt;%DDK%\inc\api SET LIB=%DDK%\lib\win7\i386;%DDK%\lib\crt\i386
x64バイナリ(64ビット)をビルドする場合
SET DDK=C:\WinDDK\7600.16385.1 SET PATH=%DDK%\bin\x86\x86;%DDK%\bin\x86;%PATH% SET INCLUDE=%DDK%\inc\crt;%DDK%\inc\api SET LIB=%DDK%\lib\win7\i386;%DDK%\lib\crt\i386

cl.exe が使えるか確認する

環境変数を設定したら、コマンドプロンプトで cl.exe を実行してみます。バージョンなどの情報が出力されれば OK です。

簡単な Cプログラムをビルドする

以下の簡単なプログラムを hello.c という名前で保存しておきます。

hello.c
#include <stdio.h> int main(int argc, char* argv[]) { printf("Hello, World!!\n"); return 0; }

次のコマンドを実行してプログラムをビルドします。

cl.exe hello.c

ビルドが成功すれば hello.exe が出来上がります。 hello.exe を実行してみましょう。

hello.exe

以上で、Windows Driver Kit 7.1のインストールと簡単なビルドは完了です。

Windows Driver Kit 7.1にはコンパイラーも付属しているので、簡単なプログラムであればこれだけでビルドすることもできます。

Visual Studioを使っている開発者であれば、 Visual Studioのライブラリ ディレクトリとインクルードディレクトリの先頭に Windows Driver Kit 7.1のライブラリ・パスとインクルード・パスを含めることで msvcrt.dll に依存する実行ファイルをビルドできるようになります。