質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

4回答

938閲覧

「ゲームプログラマになる前に覚えておきたい技術」第5章のソースコードをコンパイルすると「未解決の外部シンボル」エラー

6janazi

総合スコア15

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/05/29 15:36

編集2018/05/29 17:38

前提・実現したいこと

「ゲームプログラマになる前に覚えておきたい技術」第5章を写経して、ビルドするとLNK2019が8個、LNK2001が一個発生するので解決したい
質問内容:
上記の通り、ゲームプログラマになる前に覚えておきたい技術の第五章のソースコードを別プロジェクトで写経して、
ビルドすると、多くなってしまうので一部に留めますが以下のようなコンパイルエラーが発生してしまいます。
言語はC++、コンパイラはvisual studio2015になります

発生している問題・エラーメッセージ

LNK2001 外部シンボル ""public: bool __thiscall GameLib::Framework::isKeyTriggered(int)const " (?isKeyTriggered@Framework@GameLib@@QBE_NH@Z)" は未解決です。 Beforebecomespro C:\Users***\Documents\Visual Studio 2015 \Projects \BeforeGameProgramer \nimotsukunImage\Stageselect.obj LNK2019 未解決の外部シンボル "public: bool __thiscall GameLib::Framework::isKeyTriggered(int) const " (?isKeyTriggered@Framework@GameLib@@QBE_NH@Z) が関数 "public: void __thiscall Sequence::Title:: update(class Sequence::parent *)" (?update@Title@Sequence@@QAEXPAVparent@2@@Z) で参照されました。 Beforebecomespro C:\Users *** \Documents \Visual Studio 2015 \Projects \BeforeGameProgramer \nimotsukunImage \Title.obj

情報不足で大変申し訳ありません。恐縮ですが助言をいただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chankane

2018/05/29 23:18

コードを貼り付けると、その本を持っていない方からも助言が貰えますよ!
yoorwm

2018/05/30 01:43

リンク部分で失敗しているように見えるので、ソースコードではなくてリンクの設定側ですね。まあようするにy_waiwaiさんの書かれている通り「ライブラリの指定をやり直してみよう」という事になりますが。
guest

回答4

0

私も同じ本を持っていますが、VSのバージョン依存が問題でVS2015やVS2017ではサポートページにあるVS2012版のプロジェクトファイルでもビルドが困難です。

VS2015であれば、このページが参考になるかもしれません。

「ゲームプログラマになる前に覚えておきたい技術」のサンプルコードをWindows10のVisual Studio Community 2015でビルドする
http://log.moremorefor.net/entry/game-programmer-book-build-vs2015

また、すらりん氏が個人的に行っている近代化プロジェクト(VSのバージョン依存やDirectX SDK 2010 Juneへの依存を排除したもの)というのもあります。
CMakeの導入が必要となりますが、下記ページにその手順も書いてあります。

ゲームプログラマーになる前に覚えておきたい技術 近代化プロジェクト
http://blog.techlab-xe.net/game-programmer-book-new-build

近代化プロジェクト githubリポジトリ
https://github.com/techlabxe/game-programmer-book-build

投稿2018/05/30 05:58

mingos

総合スコア4025

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

ベストアンサー

本書を購入したわけではないので書籍サイトのソース読んだだけですが
本書では、GameLibという同名でありながら中身の異なるライブラリを使いまわしています。

ちゃんと、5章用のGameLibになっていますでしょうか?

投稿2018/05/30 03:24

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

6janazi

2018/05/31 13:32

回答していただき誠にありがとうございます。ライブラリを5章用のものに対応させたところ、一部を除いてうまくいきました。その一部のビルドエラーはヘッダファイルで関数の宣言をしていたにも関わらず対応する関数をソースファイルで実装していなかったのが原因でした。
guest

0

そのコードが必要とするライブラリが読み込まれていない、
ってことなんで、もいちどそいつをよく読んで、ライブラリの指定をやり直してみよう、ってことで

投稿2018/05/29 23:37

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

サポートページの情報は確認されていますでしょうか?
修正版サンプルファイルも出ているようですが、最新は Visual Studio 2012 用のようです。

VSのバージョンが異なるため、いくらかはパスや設定の変更が必要なのかもしれません。

投稿2018/05/30 01:44

mituha

総合スコア385

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問