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 Environment Tools 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¥amd64;%DDK%¥bin¥x86;%PATH% SET INCLUDE=%DDK%¥inc¥crt;%DDK%¥inc¥api SET LIB=%DDK%¥lib¥win7¥amd64;%DDK%¥lib¥crt¥amd64

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 に依存する実行ファイルをビルドできるようになります。

この記事を共有しませんか?