【DXライブラリ】LNK2019未解決の外部シンボルが出た時の対処法

先日Visual Studio 2019でDXライブラリを使えるようにプロジェクトを作りビルドしたらエラーが出てしまった。未解決の外部シンボル~がうんたら。エラー文を見る限りではライブラリがうまく通ってないっぽい。

とあるゲームプログラミング関連のサイトで解決策がすでに書かれているのだが何故かアクセスできないことが多いので補完の意味も込めてメモ。

LNK2019未解決の外部シンボルがうんたら

先日Visual Studio 2017から2019に乗り換えた。その際に既存のプロジェクトを一から作り直したのだがビルド時に以下のエラーが出てしまった。

LNK2019 未解決の外部シンボル _main が関数 “int __cdecl invoke_main(void)” (?invoke_main@@YAHXZ) で参照されました

未解決の外部参照、と書かれているのでおそらくはDXライブラリの設定を間違えたんだろうなと。

DXライブラリ置き場に書かれている手順通り設定をし直したがそれでも同じエラーが出てしまった。DXライブラリ自体に不具合があるようでもない。どうもDXライブラリの設定ミスではないっぽい。

テンプレートの選択ミス

よくわからないのでとりあえず出てきたエラー文で検索したところ、だいぶ前から同じ症状に遭った人がいて、すでに解決済みの問題であった。

DXライブラリの設定ミスではなく、プロジェクトを作る際に選ぶテンプレートを間違えてしまったらしい。

ブログ主の場合、テンプレートから空のプロジェクトを選択したのだがそれがエラーの元だったようだ(正しくはWindowsデスクトップウィザード→空のプロジェクトを選ぶ)。

もし一旦プロジェクトを作成してしまった場合、また一から作り直さないといけないかというとそんなことはなく、プロパティの設定を変更すればこの問題を解決できる

未解決の外部シンボルエラーを解消する

まずは上のメニューから「プロジェクト(P)」を選択し、出てきたリストから「プロパティ(E)」を選択する。

出てきたダイアログ画面で左のリストから構成プロパティ→リンカ→システムと選択し、そしてサブシステムをWindows(/SUBSYSTEM:WINDOWS)にする。

最後にOKまたは適応をクリック。これでビルド時に上のエラー文は出てこなくなり正常にコンパイルされる。

最初からDXライブラリ置き場の手順通りにやればよかったのだが、中途半端にやり方を覚えていたせいで面倒なエラーに出会ってしまった。今後は気をつけたい。

コメント

タイトルとURLをコピーしました