「プログラマになる前に覚えておきたい技術」の第2章以降のサンプルプログラムが動かない!!!
今回のテーマは「プログラマになる前に覚えておきたい技術」(以下 本書)を読むにあたって恐らく一番の難関です。少なくとも僕にとってはかなりの難関でした…
特にVisualStudioを使い慣れていない方はバージョンの違いによるエラーにかなり苦しむと思いますし、このサイトにたどり着いた方はそういう方だと思います。
では、これから出会うであろう(既に出会ったであろう)エラーやトラブルを(覚えている限り)列挙していきます。僕は以下の作業を2012年版のサンプルコードに対して行いました。 基本的にこれらのエラーは言語やVisualStudioのバージョンの違いによるものです。
ちなみに筆者の環境は
- Windows10
- VisualStudio 2019
です。(情報はこれで足りてるのかな…)
確認されたエラー
'max': 識別子が見つかりませんでした
'RuntimeLibrary'の不一致が検出されました。値'Mtd_StaticDebug'がMDd_DynamicDebugの値'File.obj'と一致しません。
'_MSC_VER' の不一致が検出されました。値 '1700' が 1900 の値 'File.obj' と一致しません。
ファイル"xx.xx"が開けません
1について
これはstd::max
やstd::min
がalgorithm.h
に存在しているために起こる現象です。#include <algorithm>
をコードに追加すると治ります。
2について
これは独自のプロジェクトを作成したときに起こる印象です。プロジェクト -> プロパティ -> C/C++ -> コード生成 で表示される画面内のランタイムライブラリの欄を画面左上の構成をDebugにして「マルチスレッドDLL (/MD)」に変えてください。構成Releaseにおいては問題なかったはずです。
3について
この問題についてはこちらを参照してください。
4について
恐らく、環境変数GAME_LIB_DIRの設定ミスか、あるプロジェクトを選択した状態で プロジェクト -> プロパティ から設定できる追加のインクルードディレクトリの設定などが原因かもしれません。どちらも本書第2章に記載してあるのでもう一度確認してみましょう。
(追加)
別のミスとしてVisualStudioでプロジェクトを立ち上げる際に聞かれる「プロジェクトテンプレート」の選択ミスです。第1章はコンソールアプリ。第2章以降はデスクトップアプリを選択しましょう。
参考にしたサイト及びページ
別アプローチ
ゲームプログラマーになる前に覚えておきたい技術 近代化プロジェクト
こんなのもあるみたいです。参考にしてみてください。