ヘッダファイルやライブラリを where コマンドで探す
Visual C++ のヘッダファイル (.h) やライブラリ (.lib) は、あちこちに分散していたり、バージョンアップのたびに場所が変わったりして、何がどこにあるのかすぐに分からなくなってしまいます。そんなとき、通常は実行ファイルの検索に使う where コマンドを利用して、ヘッダファイルやライブラリを探すことができます。
動作確認環境
- Windows 10 Home 21H1, 64bit
- Visual Studio Community 2019
ヘッダファイルを探す
where コマンドでヘッダファイル(インクルードファイル)を検索する際のポイントは、「インクルードパスの指定」です。
それでは、「stdio.h」を探してみましょう。
- Visual Studio のコマンドプロンプトを開きます。ここでは「x86 Native Tools Command Prompt for VS2019」を使います。
- プロンプトが長くて邪魔なので、「cd \」と入力してルートディレクトリに移ります。
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>cd \
C:\>
- Visual Studio のコマンドプロンプトが設定したインクルードパス(環境変数 include)を見てみます。この「;」で区切られたパスのどこかに「stdio.h」が入っていると思われます。
C:\>set include
INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC
\Tools\MSVC\14.28.29910\ATLMFC\include;C:\Program Files (x86)\Microsoft
Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\include;C:\Progra
m Files (x86)\Windows Kits\NETFXSDK\4.8\include\um;C:\Program Files (x86
)\Windows Kits\10\include\10.0.19041.0\ucrt;C:\Program Files (x86)\Windo
ws Kits\10\include\10.0.19041.0\shared;C:\Program Files (x86)\Windows Ki
ts\10\include\10.0.19041.0\um;C:\Program Files (x86)\Windows Kits\10\inc
lude\10.0.19041.0\winrt;C:\Program Files (x86)\Windows Kits\10\include\1
0.0.19041.0\cppwinrt
- where コマンドで「stdio.h」を探します。このとき、「where stdio.h」とするのではなく、ファイル名の前に「$include:」を付加して「where $include:stdio.h」とするのがポイントです。結果、「…\ucrt」ディレクトリ内に見つかりました。
C:\>where $include:stdio.h
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt\stdio.h
- 「windows.h」も探してみましょう。今度は「…\um」ディレクトリ内に見つかりました。
C:\>where $include:windows.h
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\Windows.h
ライブラリファイルを探す
ライブラリファイルの検索も、ヘッダファイルの場合とほぼ同じです。ただし、インクルードパスではなくライブラリパスを指定します。
それでは、「user32.lib」を探してみましょう。
- Visual Studio のコマンドプロンプトを開きます。
- ルートディレクトリに移ります。
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>cd \
C:\>
- ライブラリパス(環境変数 lib)を見てみます。
C:\>echo %lib%
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\M
SVC\14.28.29910\ATLMFC\lib\x86;C:\Program Files (x86)\Microsoft Visual S
tudio\2019\Community\VC\Tools\MSVC\14.28.29910\lib\x86;C:\Program Files
(x86)\Windows Kits\NETFXSDK\4.8\lib\um\x86;C:\Program Files (x86)\Window
s Kits\10\lib\10.0.19041.0\ucrt\x86;C:\Program Files (x86)\Windows Kits\
10\lib\10.0.19041.0\um\x86
- where コマンドで「user32.lib」を探します。ファイル名の前に「$lib:」を付加して「where $lib:user32.lib」とするのがポイントです。結果、「…\um\x86」ディレクトリ内に見つかりました。
C:\>where $lib:user32.lib
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x86\User32.Lib
- 「vcruntime.lib」も探してみましょう。「/t」オプションを付けると、ファイルサイズとタイムスタンプも表示されます。今度は「…\lib\x86」ディレクトリ内に見つかりました。
C:\>where /t $lib:vcruntime.lib
71812 2021/04/02 21:11:11 C:\Program Files (x86)\Microsoft Visual Studio
\2019\Community\VC\Tools\MSVC\14.28.29910\lib\x86\vcruntime.lib