久しぶりに古いプロジェクトを開いたら、出力ウィンドウがリンクエラー(LNK〜)で埋まっていた、という経験は珍しくありません。
この記事では、むやみに設定をいじる前に見るべき場所を順番にまとめています。
LNKエラーの原因切り分け:エラー番号で見るべき場所が決まる
まず、エラー一覧の一番上に出ている番号を確認してください。これで対応が二つに分かれます。
| エラー | 何が起きてる? | 最初に疑う場所 |
|---|---|---|
| LNK1104 | ファイル自体がない / 開けない | MFCのインストール忘れ、パス設定、権限/ロック |
| LNK2019 / LNK2001 | ファイルはあるけど中身(関数/変数)が合わない | 設定の不一致(文字セット/x64)、ライブラリ指定漏れ、サブシステム |
以下、この順番でチェックしていきます。
手順1:まずは「構成」のズレを疑う
LNKエラーは「コードは悪くないのに設定がズレている」パターンが多いです。ここがズレていると、後の手順をいくら頑張っても直りません。
Visual Studioの上部にある「構成マネージャー」を確認してください。

- Debug / Release は合っていますか?
- x86(Win32) / x64 は合っていますか?
よくある事例:
- x64でビルドしようとしているのに、参照しているライブラリが32bit(x86)版のまま
- Debugの設定だけ直して満足し、Releaseビルドでもエラーが出る
設定を触るときは、必ず「構成」と「プラットフォーム」をセットで確認してください。迷ったら「すべての構成 / すべてのプラットフォーム」を選んで一括設定するのが確実です。
手順2:LNK1104「ファイルを開けません」の原因と対処
mfcxxxud.lib や xxx.lib が開けないと言われているパターンです。
① MFCコンポーネントが入っていない
エラーのファイル名が mfcxxx.lib や mfcxxxud.lib 系なら、まずここを疑ってください。
Visual StudioはデフォルトでMFCをインストールしません。「C++によるデスクトップ開発」を選んだだけでは入っていないことがあります。
直し方:
- Visual Studio Installer を起動
- 「変更」→「個別のコンポーネント」タブへ
- 検索窓に「MFC」と入力
- 最新のMSVCにチェックを入れてインストール

② ライブラリのパス/指定が足りない
MFC以外のライブラリ(自社ライブラリ等)でこれが出る場合、リンカーがファイルを見つけられていません。「フォルダは合っているのに…」という場合は、.lib自体の指定漏れも確認してください。
- プロジェクトのプロパティ → リンカー → 全般 → 追加のライブラリ ディレクトリ
→.libが入っているフォルダのパスがあるか確認します - プロジェクトのプロパティ → リンカー → 入力 → 追加の依存ファイル
→xxx.lib自体が列挙されているか確認します(なければ追加)


※ 同期ソフトやウイルス対策でファイルがロックされてLNK1104になるケースもあります。
手順3:LNK2019 / LNK2001「未解決の外部シンボル」の場合
「ファイルはあるけど、中身が合わない」という状態です。どのシンボル(関数)でエラーが出ているかを見ると原因が一気に絞れます。
① CWinApp、CDialog、CString などで出ている
→ MFCを使う設定になっていません。
- プロジェクトのプロパティ → 詳細 → MFCの使用
- ここが 「標準Windowsライブラリを使用する」 になっていたらアウトです
- 「共有 DLL で MFC を使用」(またはスタティック)に変えてください。これだけで直ります

② _WinMain@16 や _wWinMain で出ている
→ 文字セットと入口(Main関数)がズレています。
MFCには「Unicode(現在の主流)」と「マルチバイト(旧来)」の2系統があり、設定とコードが噛み合っていないと入口関数が見つからずリンクエラーになります。サブシステムのズレでも同じエラーが出るので、セットで確認してください。
- 設定側: プロパティ → 詳細 → 文字セット
- コード側:
WinMain(マルチバイト)vswWinMain(Unicode)になっているか - 合わせて確認: プロパティ → リンカー → システム → サブシステム
→ WindowsアプリならWindows (/SUBSYSTEM:WINDOWS)になっているか


最終手段:それでも原因が分からない場合
「設定は合っているはずなのに直らない」という場合は、リンカーに何をどう探して、なぜ弾いたかを全部出力させます。
- プロパティ → リンカー → 全般 → 進行状況の表示 を 「詳細情報をすべて表示 (/VERBOSE)」 に変更
- リビルドする
- 出力ウィンドウに大量のログが出るので、エラーになったシンボル名や
.lib名で検索 - 「ディレクトリ
C:\libsを検索しました… 見つかりませんでした」のようなログで原因を特定できます
※ 解決したら /VERBOSE は戻してください。ビルドが遅くなります。

再発防止チェックリスト
- [ ] 新しいPCにはまず VS InstallerでMFCを入れる
- [ ] 設定変更時は Debug/Release・Win32/x64 の不一致に気をつける
- [ ] 謎のパスエラーが出たら絶対パスを疑う(可能なら相対パス化)
- [ ] WinMainのエラーは文字セット + サブシステムをセットで疑う
