我收到这些错误消息
这是我的解决方案:
Engine.cpp
Main.cpp
SetupSDL.cpp
这是Engine.h
的代码
#pragma once
#include "SetupSDL.h"
class CEngine
{
public:
CEngine(void);
~CEngine(void);
void SetWindowSize(int winW, int winH, const char* GameName, int windowMode);
void Begin(void);
int GetDisplayWidth(void);
int GetDisplayHeight(void);
private:
int deskW;
int deskH;
bool playing;
CSetupSDL* sdl_setup;
};
Engine.cpp
的代码#include "Include/stdafx.h"
#include "Include/Engine.h"
CEngine::CEngine(void)
{
playing = true;
deskW = GetSystemMetrics(SM_CXSCREEN);
deskH = GetSystemMetrics(SM_CYSCREEN);
}
CEngine::~CEngine(void)
{
}
void CEngine::SetWindowSize(int winW, int winH, const char* GameName, int windowMode)
{
// set up SDL for use
sdl_setup = new CSetupSDL(winW, winH, GameName, windowMode);
}
void CEngine::Begin(void)
{
while (playing && sdl_setup->GetMainEvent()->type != SDL_QUIT)
{
sdl_setup->Begin();
sdl_setup->End();
}
playing = false;
}
int CEngine::GetDisplayWidth(void){ return deskW; }
int CEngine::GetDisplayHeight(void){ return deskH; }
DelveEngine项目成功构建,而delveenginetest项目失败。
怎么了?我到处看都是有原因的,找不到适合我的一个。
最佳答案
尽管您没有提供正确诊断问题的所有足够信息,但我将尝试分享我可以想象的可能是链接器错误的原因:
delveenginetest
项目旨在为DelveEngine
项目中的类设置单元测试。 Main.cpp
项目中有一个DelveEngine
,所以我猜想它只是作为可执行文件构建(成功)。 delveenginetest
需要链接到DelveEngine
项目提供的类,但这实际上是不可能的,因为.exe
中的DelveEngine
不能用于链接,因此需要一个库将其导入到另一个可执行文件(单元测试)框架)。 我建议将您的类/源文件从
DelveEngine
项目中分离出来,以组成一个静态或共享库,这些库可以从一个VS解决方案中同时与应用程序和测试框架链接:Solution 'DelveEngine' (3 projects)
DelveEngineLib (project [.lib/.dll])
Include
delve.h
Engine.h
SetupSDL.h
Engine.cpp
SetupSDL.cpp
DelveEngine (project [.exe])
Main.cpp
delveenginetest (project [.exe])
Main.cpp (TestFramework main definition)
由于我不太熟悉它,因此我实际上并不知道,VS 2013是否支持设置使用虚拟资源的项目(请考虑实际构建环境中的源链接),但这可以作为一种替代方法来设置应用程序和单元测试,无需额外的库。