さて、私は何日もこれに苦労してきました。CryENGINE 用のカスタム ゲーム DLL を最初から作成していますが、1 つの単純なクラス (Game.cpp) とプリコンパイル済みヘッダー (StdAfx.h) でソリューションをコンパイルすることさえできません。
Game.cpp と StdAfx.cpp はどちらも単独で完全にコンパイルされますが、ソリューションをコンパイルすると、大量の乗算定義エラーがスローされます。定義は単なるプレースホルダーであるため、クラスは単純です。
ゲーム.h
#if !defined __GAME__H__
#define __GAME__H__
#pragma once
class CGame : public IGame
{
public:
CGame();
VIRTUAL ~CGame();
//IMPLEMENT: IGame Interface, all methods declared.
};
#endif
ゲーム.cpp
#include "StdAfx.h" //PreComp header
#include "Game.h"
//Define all methods, each one has a simple definition.
StdAfx.h
#if !defined __STDAFX__H__
#define __STDAFX__H__
#pragma once
//Various CryENGINE includes
#endif
出力
error LNK2005: "struct SSystemGlobalEnvironment * gEnv" (? gEnv@@3PEAUSSystemGlobalEnvironment@@EA) already defined in StdAfx.obj
error LNK2005: "public: static long volatile _CryMemoryManagerPoolHelper::allocatedMemory" (?allocatedMemory@_CryMemoryManagerPoolHelper@@2JC) already defined in StdAfx.obj
error LNK2005: "public: static long volatile _CryMemoryManagerPoolHelper::freedMemory" (?freedMemory@_CryMemoryManagerPoolHelper@@2JC) already defined in StdAfx.obj
error LNK2005: "public: static long volatile _CryMemoryManagerPoolHelper::requestedMemory" (?requestedMemory@_CryMemoryManagerPoolHelper@@2JC) already defined in StdAfx.obj
error LNK2005: "public: static int volatile _CryMemoryManagerPoolHelper::numAllocations" (?numAllocations@_CryMemoryManagerPoolHelper@@2HC) already defined in StdAfx.obj
The list goes on...
本当に私をうんざりさせるのは、それぞれが個別にうまくコンパイルされるため、構文と参照が優れていることです。ソリューション全体をコンパイルしたときに、多重定義エラーが発生する可能性があるのは何ですか?
このイライラする問題について助けていただき、本当にありがとうございます。