[UE4] "コードファイル D:¥Build¥++UE4+Licensee¥xxx が見つかりません" の解消方法


UE4をデバッグしようとして、デバッグシンボルを有効にしたり、ソースコードを入手しても、実際にC++ Symbolsを表示させようにも上記エラーで解決できないことがある。

1. まずエラーで表示されているパスを確認

表示されるのが一瞬なので、スクリーンショットを撮るのがおすすめ。

4.25.4 が最新の2020年11月現在では、表示されるパスは D:¥Build¥++UE4+Licensee¥SyncD:¥Build¥++UE4¥Sync など、

  • なぜか必ず Dドライブ を示していて
  • ++UE4 とか Sync とかの文字列が入っている

のが特徴。このパスは、Epic Gamesが配布版のUE4をビルドしたときに指していたパスと言われていて、配布版のバイナリの場合は変更することはできないらしい。

自分でビルドしたUE4であればそもそも上記エラーは出ないのだが、以下で示す解決法は、自分でUE4をビルドすることなく、指しているパスを再現することで解決する方法。

2. Dドライブを物理的 or 仮想的に準備

既にDドライブが存在する人は飛ばして次へ。

ない人は物理的に準備するか、以下の方法で仮想的に作る。

  • エクスプローラーでCドライブ直下に VirtualDDrive というフォルダを作り
  • コマンドプロンプトを管理者権限 なしで 開き
  • subst D: C:¥VirtualDDrive を実行

こうすると、仮想的にDドライブができ、Cドライブ直下に作った VirtualDDrive というパスを指すようになる。

ただしsubstコマンドの効果は再起動すると消えてしまうので、上記内容のbatファイルを作ってスタートアップフォルダに入れておくと解決する。詳しくは別のQiita記事などを参照。

3. Syncまでのフォルダを作成

次に先程準備したDドライブに、Syncフォルダまでのフォルダをエクスプローラーで作成する。パスは控えておいたエラーメッセージの通りにする。

例えば D:¥Build¥++UE4+Licensee¥Syncと表示された場合は、DドライブにBuild、その中に++UE4+Licenseeフォルダを作る。

ただしSyncフォルダ自体は次の作業でリンクを作るので、作らないでOK。

4. SyncフォルダとUE4のソースコードをリンクさせる

コマンドプロンプトを開いてジャンクション (またはシンボリックリンク) を作成する。

例えばエラーメッセージに D:¥Build¥++UE4+Licensee¥Sync と出ていて、UE4のソースコードが C:¥UE_4.25 にある場合は、

mklink /J D:¥Build¥++UE4+Licensee¥Sync C:¥UE_4.25

をコマンドプロンプトで実行する。(管理者権限が必要な場合がある。)

これで、擬似的にエラーメッセージに出ていたパスが再現されるので、改めて実行するとエラーは起きない。

もちろん、ジャンクションやシンボリックリンクでなくても、物理的にそのフォルダにソースコードを移動させてもOK。

補足: 何かと便利なシンボリックリンク

ちなみにジャンクションやシンボリックリンクを作る方法はいろいろと便利で、Visual Studio内でUE4のパスが上手く参照されないときの暫定的な解決法にもなるし、容量が大きいフォルダを別のドライブに移してシンボリックリンクで元の場所にあるかのように振る舞わせたりすることができる。

ただし、ジャンクションやシンボリックリンクを削除するときは、うっかり元のフォルダの中身が消えてしまわないように細心の注意が必要(unlinkやrmdirなどを使って消す)。