新 「ゲームプログラマになる前に覚えておきたい技術」 VS2010対応

「ゲームプログラマになる前に覚えておきたい技術」に付属しているソース類で、
VisualC++2010用に変換したプロジェクトおよびソースコードを用意してみました。手元の環境でデバッグ/リリース構成のビルドを確認しています。

2011/02/09 にファイル群を更新しました。
2011/07/08 にファイル群を更新しました。
Windows Vista/7上でのヒープ破壊メッセージに対する対処を入れてあります。

プロジェクト変換について

  • ライブラリの全体最適化を無効化してあります。
  • ワーニングレベルを3に落としたものがいくつかあります。
  • 算術関連(sin,cos,tan,など)を名前空間付きに変更しました。

サンプルコードによっては、全体最適化適用による不具合のため、
exe用のプロジェクトでも無効化してあるものがあります。

なお、変換に用いたのはVisulStudio2010Professionalです。
ですが、expressエディションでも開くことは可能かと思われます。

使用方法

CDROM内にある、VisualStudio2008用のソースコードを展開した後、
srcフォルダでダウンロードしたファイルを上書きで展開してください。

書籍で解説されている各サンプルをVisualStudio2010環境で使うには、
さらに以下の手順による準備が必要です。

VS2010用に準備する!

src/GameLibs内の各フォルダにある *.slnファイルらを
DebugとReleaseの両方でリビルドします。
ただこれには順番も関係しており、以下の手順でリビルドを行っていきます。

  1. Modulesフォルダ内 Modules.slnを開きます
    1. メニューからビルド → バッチビルドを選択
    2. “全て選択”ボタンを押す。全てにチェックが入ります
    3. “リビルド”ボタンを押します。
      1. リビルドが開始されます。
  2. それ以外のそれぞれのフォルダのGameLib.slnを開いて、ライブラリをビルドしていきます。
    1. 2DActionGame
    2. 2DGraphics1
    3. 2DTransform
    4. 3DCollision1
    5. 3DGraphics1
    6. 3DHardware1
    7. InputDevices
    8. Loading
    9. RealTime
    10. Sequence1
    11. Sound1
    12. Sound2
    13. Final

これでそれぞれのサンプルプログラムを開いて、
書籍で説明されているステップを進めていくことが出来るようになります。

注意事項

公開しているアーカイブの再配布を禁止します。
また、公開したアーカイブを使用したことによる損害については、
筆者および公開した私自身がその責務を負いません。
利用する際には、自己責任でご利用下さい。

ダウンロード

ゲームプログラマになる前に覚えておきたい技術 2010対応 注意事項に同意の上、ダウンロードしてください。

このファイル中にソースコードが一部含まれますが、
これについては著者の許可をもらって公開しております。

動作確認環境

  • Windows7 Ultimate x64環境
  • VisualStudio2010Professional/VC2010 Express
  • PentiumDualCore E6500, Core i7 860
  • Geforce9800GT, RADEON HD 5450

この環境で、含まれるサンプルソースコードの実行等を確認しております。
少なくともこのプロジェクト類を用いて 64bit環境での動作を確認できております。

エラーメッセージについて

1>GameLib_d.lib(OStringStream.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(Thread.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(DocumentImpl.obj) : error LNK2019: 未解決の外部シンボル "public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ) が関数 "public: void __thiscall GameLib::PseudoXml::Document::Impl::convertToBinary(class GameLib::Array *)const " (?convertToBinary@Impl@Document@PseudoXml@GameLib@@QBEXPAV?$Array@D@4@@Z) で参照されました。
1>GameLib_d.lib(Texture.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(Manager.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(Manager.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(InFile.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(Framework.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(WindowCreator.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(Font.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(StringRenderer.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xran(void)" (?_Xran@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(OStringStream.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(Thread.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(DocumentImpl.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(Texture.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(Manager.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(Manager.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(InFile.obj) : error LNK2019: 未解決の外部シンボル "public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ) が関数 "public: __thiscall std::pair,class std::allocator > const ,class GameLib::FileIO::InFile::Impl *>::pair,class std::allocator > const ,class GameLib::FileIO::InFile::Impl *>(struct std::pair,class std::allocator > const ,class GameLib::FileIO::InFile::Impl *> const &)" (??0?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PAVImpl@InFile@FileIO@GameLib@@@std@@QAE@ABU01@@Z) で参照されました。
1>GameLib_d.lib(Framework.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(WindowCreator.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(Font.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(StringRenderer.obj) : error LNK2001: 外部シンボル ""public: static void __cdecl std::_String_base::_Xlen(void)" (?_Xlen@_String_base@std@@SAXXZ)" は未解決です。
1>GameLib_d.lib(Manager.obj) : error LNK2001: 外部シンボル ""long const std::_BADOFF" (?_BADOFF@std@@3JB)" は未解決です。
1>GameLib_d.lib(Manager.obj) : error LNK2019: 未解決の外部シンボル "private: static void __cdecl std::locale::facet::facet_Register(class std::locale::facet *)" (?facet_Register@facet@locale@std@@CAXPAV123@@Z) が関数 "class std::ctype const & __cdecl std::use_facet >(class std::locale const &)" (??$use_facet@V?$ctype@D@std@@@std@@YAABV?$ctype@D@0@ABVlocale@0@@Z) で参照されました。
1>GameLib_d.lib(Manager.obj) : error LNK2019: 未解決の外部シンボル "public: static void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,class std::basic_string,class std::allocator > const &)" (?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z) が関数 "public: __thiscall std::_Locinfo::_Locinfo(class std::basic_string,class std::allocator > const &)" (??0_Locinfo@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z) で参照されました。

このようなエラーメッセージが出た場合には、
そのサンプルプログラムが必要とするGameLib.lib, GameLib_d.lib が
VisualStudio2010でビルドされていないことが理由です。

前に説明したリビルドの部分を確認してみてください。

Leave a comment ?

18 Comments.

  1. はじめまして。質問なのですが、ここに書いてある方法でサンプルファイルを2010用に変換しようとすると、「リビルドにすべて失敗しました」と出てしまい、リビルドができません。この場合はどうしたらよいのでしょうか? 作業環境はWindows7Professional、VC2010expressです。

  2. リビルドの失敗についてほかにはどのようなエラーメッセージがでていますか?

  3. VisualStudioの出力ウインドウに出てきたエラーはこう出てきてました。
    src\Base\PrimeNumber.cpp(260): warning C4127: 条件式が定数です。
    Thread.cpp
    C:\Users\akiko\Documents\GameLib2010\src\GameLibs\Modules\src\Threading/ManagerImpl.h(72): warning C4127: 条件式が定数です。
    C:\Users\akiko\Documents\GameLib2010\src\GameLibs\Modules\src\Threading/ManagerImpl.h(90): warning C4127: 条件式が定数です。
    src\WindowCreator\WindowCreator.cpp(312): warning C4127: 条件式が定数です。
    C:\Users\akiko\Documents\GameLib2010\src\GameLibs\Modules\src\Threading/ManagerImpl.h(72): warning C4127: 条件式が定数です。
    C:\Users\akiko\Documents\GameLib2010\src\GameLibs\Modules\src\Threading/ManagerImpl.h(90): warning C4127: 条件式が定数です。
    LINK : fatal error LNK1181: 入力ファイル ‘dxguid.lib’ を開けません。

    c:\users\akiko\documents\gamelib2010\src\gamelibs\modules\src\windowcreator\windowcreator.cpp(312): warning C4127: 条件式が定数です。
    c:\users\akiko\documents\gamelib2010\src\gamelibs\modules\src\threading\managerimpl.h(72): warning C4127: 条件式が定数です。
    c:\users\akiko\documents\gamelib2010\src\gamelibs\modules\src\threading\managerimpl.h(90): warning C4127: 条件式が定数です。
    c:\users\akiko\documents\gamelib2010\src\gamelibs\modules\src\base\primenumber.cpp(260): warning C4127: 条件式が定数です。
    c:\users\akiko\documents\gamelib2010\src\gamelibs\modules\src\threading\managerimpl.h(72): warning C4127: 条件式が定数です。
    c:\users\akiko\documents\gamelib2010\src\gamelibs\modules\src\threading\managerimpl.h(90): warning C4127: 条件式が定数です。
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(1151,5): warning MSB8012: TargetPath(C:\Users\akiko\Documents\GameLib2010\src\GameLibs\Modules\lib\Modules.lib) が Library の OutputFile プロパティ値 (C:\Users\akiko\Documents\GameLib2010\src\GameLibs\Modules\lib\Modules_d.lib) と一致しません。このため、プロジェクトが正常にビルドされない可能性があります。この問題を解決するには、$(OutDir)、$(TargetName)、および $(TargetExt) の各プロパティ値が、%(Lib.OutputFile) で指定されている値と一致することを確認してください。
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(1153,5): warning MSB8012: TargetName(Modules) が Library の OutputFile プロパティ値 (Modules_d) と一致しません。このため、プロジェクトが正常にビルドされない可能性があります。この問題を解決するには、$(OutDir)、$(TargetName)、および $(TargetExt) の各プロパティ値が、%(Lib.OutputFile) で指定されている値と一致することを確認してください。
    LINK : fatal error LNK1181: 入力ファイル ‘dxguid.lib’ を開けません。

    あと、出力メッセージの中に、
    c:\program files (x86)\microsoft sdks\windows\v7.0a\include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0×0800
    という文章が何度か出てきたのですが、エラーと関係あるのでしょうか?

    • そのメッセージを見るとDirectX SDKがインストールされていないようですね。
      Microsoftのページからとりあえず DirectX SDK 2010 June をダウンロードして、パソコンへインストールしてください。

      その後、同じようにビルドしてみてください(警告は出るかも知れないですが、ライブラリは生成されるかもです)。

  4. お世話になっております。VC++初心者なのですが、お教えください。
    1.のリビルドはうまくいったのですが、
    2.以降のビルドがエラーがでて失敗してしまいます。
    同じ手順でビルドしていいのでしょうか。
    下記のエラー等がでてしまいます。

    warning LNK4221: このオブジェクト ファイルは、以前に未定義であったパブリック シンボルを定義していないため、このライブラリを使用するリンク操作では使用されません。

  5. > odioさん

    詳しいことは省きますが、以下のメッセージが出ていても問題なく使用できます。
    ・warning LNK4221: このオブジェクト ファイルは、以前に未定義であったパブリック シンボルを定義していないため~
    ・warning LNK4006: __NULL_IMPORT_DESCRIPTOR は ****.lib で定義されています。~

    これらのメッセージはエラーと言うよりは警告(WARNING)ですね。

    これらの警告を除去するためには、収録されているソースコードをそれなりに変更しないといけないような気配を感じたため、放置していました。悩ませてしまったようで、すみません。

  6. 返事が遅くなってすみません。
    DirectX SDKをインストールしたらすべてリビルドできました。
    ありがとうございました。

  7. 年始早々お返事ありがとうございます!
    延々\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073
    というのがでてたんですが原因がわかりまして無事リビルドできました!デバック開始がうまくいった時は正月早々お漏らししそうなくらいうれしかったです。ありがとうございました!

  8. お世話になっております。
    大変分かりやすい手順を教えていただきありがとうございます。
    ライブラリを利用する段階で躓いていたので大変助かります。
    しかし、手順どおりに作業をしても、どうしても下記の2種類のエラーが出てしまい困っております。

    お手間をおかけし申し訳ないのですが、ご解答いただければ幸いです。
    作業環境はWindows7HomePremium、VC2010expressです。

    —— すべてのリビルド開始: プロジェクト: Graphics, 構成: Release Win32 ——
    ‘C:\Users\○○\Documents\Visual’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    ‘C:\Users\○○\Documents\Visual’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    ‘C:\Users\○○\Documents\Visual’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: コマンド “C:\Users\○○\Documents\Visual Studio 2010\Projects\GameLib2008\src\GameLibs\Modules\..\..\Tools\bin\ConvertToCode.exe shader\hlsl\VertexLightingVs.obj -o src\VertexLightingVsGenerated.h
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: C:\Users\○○\Documents\Visual Studio 2010\Projects\GameLib2008\src\GameLibs\Modules\..\..\Tools\bin\ConvertToCode.exe shader\hlsl\PixelLightingVs.obj -o src\PixelLightingVsGenerated.h
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: C:\Users\○○\Documents\Visual Studio 2010\Projects\GameLib2008\src\GameLibs\Modules\..\..\Tools\bin\ConvertToCode.exe shader\hlsl\PixelLightingPs.obj -o src\PixelLightingPsGenerated.h
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073:
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: :VCEnd” はコード 9009 で終了しました。
    —— すべてのリビルド開始: プロジェクト: Graphics, 構成: Debug Win32 ——
    ‘C:\Users\○○\Documents\Visual’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    ‘C:\Users\○○\Documents\Visual’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    ‘C:\Users\○○\Documents\Visual’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    ‘C:\Users\○○\Documents\Visual’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: コマンド “C:\Users\○○\Documents\Visual Studio 2010\Projects\GameLib2008\src\GameLibs\Modules\..\..\Tools\bin\ConvertToCode.exe shader\hlsl\NoLightingVs.obj -o src\NoLightingVsGenerated.h
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: C:\Users\○○\Documents\Visual Studio 2010\Projects\GameLib2008\src\GameLibs\Modules\..\..\Tools\bin\ConvertToCode.exe shader\hlsl\VertexLightingVs.obj -o src\VertexLightingVsGenerated.h
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: C:\Users\○○\Documents\Visual Studio 2010\Projects\GameLib2008\src\GameLibs\Modules\..\..\Tools\bin\ConvertToCode.exe shader\hlsl\PixelLightingVs.obj -o src\PixelLightingVsGenerated.h
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: C:\Users\○○\Documents\Visual Studio 2010\Projects\GameLib2008\src\GameLibs\Modules\..\..\Tools\bin\ConvertToCode.exe shader\hlsl\PixelLightingPs.obj -o src\PixelLightingPsGenerated.h
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073:
    C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(103,5): error MSB3073: :VCEnd” はコード 9009 で終了しました。

    —— すべてのリビルド開始: プロジェクト: Input, 構成: Release Win32 ——
    StdAfx.cpp
    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0×0800
    Joystick.cpp
    Keyboard.cpp
    Manager.cpp
    Mouse.cpp
    コードを生成中…
    LINK : fatal error LNK1181: 入力ファイル ‘dxguid.lib’ を開けません。
    —— すべてのリビルド開始: プロジェクト: Input, 構成: Debug Win32 ——
    StdAfx.cpp
    C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0×0800
    Mouse.cpp
    Manager.cpp
    Keyboard.cpp
    Joystick.cpp
    コードを生成中…
    LINK : fatal error LNK1181: 入力ファイル ‘dxguid.lib’ を開けません。

    • warrenさん

      まずは DirectX SDKをmicrosoftのページからダウンロードしてインストールしてください。

      ライブラリをビルドするためにProjects/GameLib2008以下で作業している思われるのですが、付属ディスクに入っていたzipファイルをここで展開したという認識であってますか?
      もし別の場所からコピーしたという状況であったなら、すべてのファイルをコピーしているか確認してみてください。
      ConvertToCode.exe が含まれていないため、いくつかのエラーが出ているような気もします。

      もしかしたら、DirectX SDKのコマンド実行の失敗により芋づる式にエラーとなっている可能性も高いです。
      今一度確認をよろしくお願いします。

  9. slashさん

    返信いただきありがとうございます!

    slashさんのご指摘いただいた2点を解決したところ、ビルドに成功しました!

    ①DirectX SDK
    ②ConvertToCode.exe

    ①は再インストール後パスを通したら解決しました。
    ②につきましては、パスに半角が混ざっているとだめなようでしたので、zipファイル(サポートページで公開されている2008版とslashさんのファイル)を解凍したものをC直下に置きました。

    以上の作業をした後、slashさんの手順を行うことで何とかGameLib_d.libを作成すること、サンプルをビルドすることが出来ました。
    ありがとうございます。

    …あとは自分で、ライブラリを利用するだけ…だったのですが、以下のような3つのエラーが出てとまっています。。。

    ひょっとして、ビルドに失敗しているのでしょうか?

    度々の質問で大変申し訳ないのですが、お手すきの際にご教授願えれば大変助かります。

    1>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: “public: class std::basic_istream<char,struct std::char_traits > & __thiscall std::basic_istream<char,struct std::char_traits >::read(char *,__int64)” (?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PAD_J@Z) は既に GameLib_d.lib(Manager.obj) で定義されています。

    1>GameLib_d.lib(WindowCreator.obj) : error LNK2001: 外部シンボル “__imp__MessageBoxA@16″ は未解決です。

    1>GameLib_d.lib(WindowCreator.obj) : error LNK2019: 未解決の外部シンボル __imp__SetWindowPos@28 が関数 “public: void __thiscall GameLib::`anonymous namespace’::Impl::enableFullScreen(bool)” (?enableFullScreen@Impl@?A0xbc72e283@GameLib@@QAEX_N@Z) で参照されました。

    • このようなエラーになったプロジェクトは書籍にあったものですか?
      それとも新規に作り始めた自分のプロジェクトですか?

      ちなみに上記のメッセージ内容からすると GameLib_d.libは正常にできているのではないかと思います。

  10. 返信ありがとうございます。

    サンプルプログラムはビルドできました。
    エラーが出たのは新規に作り始めた自分のプロジェクトです。
    空のプロジェクトに一から書いたプログラムで上記のエラーが出ました。
    サンプルをコピーペーストしても同様のエラーが出ました。

    GameLib_d.libはできているとの事ですので、ライブラリの読み込み等の設定周りがおかしいようですね。そのあたりを調べてみます。

    調べるべき場所が明確になりました。ありがとうございます。

    • C++の”コード生成”という設定の部分の食い違い、
      プロジェクトをWin32アプリケーションで作り始める、
      の2点が確認のポイントになるかと思います。

      • slashさん

        ついにライブラリを動かすことが出来ました!
        slashさんの丁寧な説明のおかげです!
        大変助かりました、ありがとうございます!

        VCとC++のライブラリの利用のどちらも慣れていなかったので、簡単な事を色々質問し、お手間を取らせてしまい申し訳ありませんでした。

        これで初期設定は整ったので、じっくり本を読み込んでいこうと思います。

        何度も詳しい説明をいただき、ありがとうございました。

  11. はじめまして、質問なのですが、modulesのリビルドがうまくいきません。出力エラーはこんな感じなのですが、
    src\CollisionMesh.cpp(329): error C2668: ‘abs’ : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
    10> C:\Program Files\Microsoft Visual Studio 10.0\VC\include\math.h(499): ‘float abs(float)’ の可能性があります。
    10> C:\Users\Tes\Desktop\GameLib2008\src\GameLibs\Modules\include\GameLib/Math/Functions.h(21): または ‘float GameLib::Math::abs(float)’
    10> 引数リスト ‘(float)’ を一致させようとしているとき
    10>src\CollisionMesh.cpp(329): error C2668: ‘abs’ : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
    10> C:\Program Files\Microsoft Visual Studio 10.0\VC\include\math.h(499): ‘float abs(float)’ の可能性があります。
    10> C:\Users\Tes\Desktop\GameLib2008\src\GameLibs\Modules\include\GameLib/Math/Functions.h(21): または ‘float GameLib::Math::abs(float)’

    どうしたらいいのでしょうか。
    作業環境はWindowsvista、VC2010expressです。
    よろしくおねがいします

    • たぶんやり方を間違えています。

      「CDROM内にある、VisualStudio2008用のソースコードを展開した後、
      srcフォルダでダウンロードしたファイルを上書きで展開してください。」

      今回の場合、おそらくですが CollisionMesh.cpp が更新されていません。
      ダウンロードしたzipファイルを展開して、ソースコード類を元々のファイルらに対して上書きでコピーしてください。

      • ありがとうございました!
        全てリビルド出来ました
        自分はsrcフォルダの上書きの意味が解ってなかったみたいです
        延々と元のsrcフォルダの上にcdrom内のsrcフォルダを展開してた
        どうもありがとうございました

Leave a Comment


*


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>