ok, entschuldigt, dass das so lange gedauert hat, aber ich habe nun endlich (mehr durch Zufall) herausgefunden, wodran es liegt. Also:
Ich habe in meinem Resource-Manager (auch in der engine zusammen mit der videoklasse) eine Funktion:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
bool DxResourceManager::LoadVideo(const char* pcIdentifier, char* pcFilename)
{
if(find(m_Resources.begin(), m_Resources.end(), pcIdentifier) != m_Resources.end())
LOG_ERROR("Identifer already used!", 1);
Resource NewRes;
NewRes.pcIdentifer = pcIdentifier;
NewRes.ResType = RESTYPE_USERCLASS;
NewRes.pVideo = new DxVideo;
if(NewRes.pVideo->Init(pcFilename))
LOG_ERROR("Error at loading Video!", 1);
m_Resources.push_back(NewRes);
return 0;
}
|
Die Definition für Resource:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
enum EResType
{
RESTYPE_TEXTURE,
RESTYPE_USERCLASS,
};
struct Resource
{
const char* pcIdentifer;
EResType ResType;
union
{
void* pRes;
PDIRECT3DTEXTURE9 pTex;
PDIRECT3DCUBETEXTURE9 pCubeTex;
PDIRECT3DVOLUMETEXTURE9 pVolumeTex;
DxEffect* pEffect;
DxMesh* pMesh;
DxSound* pSound;
DxMusic* pMusic;
DxVideo* pVideo;
};
inline bool operator==(const char* _pcIdentifer) { return _pcIdentifer == pcIdentifer; }
};
|
So, nun zu dem Problem. Wenn ich die Funktionsdefinition auskommentiere dann gibt es keine Linkerfehler mehr, andernfalls sagt mir der Linker folgendes:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
|
Linker-Vorgang läuft...
dxengine.lib(Video.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual class CBasePin * __thiscall CAsyncReader::GetPin(int)" (?GetPin@CAsyncReader@@UAEPAVCBasePin@@H@Z)
dxengine.lib(Video.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual int __thiscall CAsyncReader::GetPinCount(void)" (?GetPinCount@CAsyncReader@@UAEHXZ)
dxengine.lib(Video.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual __thiscall CAsyncReader::~CAsyncReader(void)" (??1CAsyncReader@@UAE@XZ)
dxengine.lib(Video.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall CAsyncReader::CAsyncReader(char *,struct IUnknown *,class CAsyncStream *,long *)" (??0CAsyncReader@@QAE@PADPAUIUnknown@@PAVCAsyncStream@@PAJ@Z)
strmbase.lib(dllsetup.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)
strmbase.lib(dllentry.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)
strmbase.lib(dllsetup.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "int g_cTemplates" (?g_cTemplates@@3HA)
strmbase.lib(dllentry.obj) : error LNK2001: Nichtaufgeloestes externes Symbol "int g_cTemplates" (?g_cTemplates@@3HA)
Release/Test.exe : fatal error LNK1120: 6 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.
|
Kann mir jemand erklären, was ich falsch mache?