Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.11.2011, 21:56

Linker Error, Methode einer Membervariable ist ein nicht aufgelöstes Externes Symbol

Folgenden Fehlercode liefert mir die IDE:

Quellcode

1
2
1>Application.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall Direct3D::GetParamContainer(struct ParamContainer *)" (?GetParamContainer@Direct3D@@QAEXPAUParamContainer@@@Z)" in Funktion ""public: void __thiscall Application::Init(void)" (?Init@Application@@QAEXXZ)".
1>Application.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: struct IDirect3DDevice9 * __thiscall Direct3D::GetD3DD(void)" (?GetD3DD@Direct3D@@QAEPAUIDirect3DDevice9@@XZ)" in Funktion ""public: void __thiscall Application::Init(void)" (?Init@Application@@QAEXXZ)".


Hier der QuellCode:

Direct3D.hpp

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
27
28
29
30
31
32
33
34
35
#pragma once 

#include <d3d9.h>
#include "Window.hpp"

struct ParamContainer
{
    int VideoModeWidth;
    int VideoModeHeight;
};



class Direct3D
{
    public:
        Direct3D ();
        ~Direct3D ();

        void InitDirect3D ();
        PDIRECT3D9 GetD3D ();
        PDIRECT3DDEVICE9 GetD3DD ();
        void GetParamContainer (ParamContainer *ParamContainer);

    private:
        void InitD3DD ();
        void InitParamContainer ();
        D3DMULTISAMPLE_TYPE GetHightestMultiSampling (PDIRECT3D9 D3D, DWORD* QualityLevel,
                                                      D3DFORMAT SurfaceFormat = D3DFMT_X8R8G8B8, BOOL Windowed = false);

        PDIRECT3D9 D3D;
        PDIRECT3DDEVICE9 D3DD;
        ParamContainer ParamContainer;
        Window MyWindow;
};


Application.hpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma once

#include "TriBase.h"
#include "Direct3D.hpp"


class Application
{
    public:
        Application ();
        ~Application ();

        void MessageLoop ();
        void Init ();
    private:    
        void Render (float Time);
        void Move (float Time);
        double GetFrequency ();

        Direct3D MyDirect3D;
};


Und void Application::Init ()

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Application::Init ()
{
    MyDirect3D.InitDirect3D ();
    ParamContainer TempParams;

    MyDirect3D.GetD3DD ()->SetFVF (D3DFVF_XYZ | D3DFVF_DIFFUSE);

    MyDirect3D.GetD3DD ()->SetRenderState (D3DRS_LIGHTING, false);
    MyDirect3D.GetD3DD ()->SetRenderState (D3DRS_CULLMODE, D3DCULL_NONE);

    MyDirect3D.GetParamContainer (&TempParams);

    float Aspect = static_cast<float> (TempParams.VideoModeWidth)
                  /static_cast<float> (TempParams.VideoModeHeight);

    tbMatrix Projection = tbMatrixProjection (TB_DEG_TO_RAD (90.0f), Aspect, 0.1f, 100.0f);

    MyDirect3D.GetD3DD ()->SetTransform (D3DTS_PROJECTION, (D3DMATRIX*) (&Projection) );
}


(Wenn es eine nicht eingebundene Lib ist, beiß ich mir in den Arsch, aber eigentlich müsste ich alles richtig gelinkt haben)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

04.11.2011, 22:05

Na die zwei in den Fehlermeldungen erwähnten Methoden sind wohl offenbar nirgendwo implementiert...

3

04.11.2011, 22:11

Danke für deine Hilfe. :)

Warum fällt mir sowas nie auf?


Grrr *Kopf meets Tischplatte*

Werbeanzeige