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

Hengstli

Treue Seele

  • »Hengstli« ist der Autor dieses Themas

Beiträge: 147

Wohnort: Dettenheim

  • Private Nachricht senden

1

05.09.2006, 01:08

Beispielprogramm 1 Problem!

Hallo Leute.... Ich hab da ein riesen Problem mit dem Beispielprogramm 1 von David. Ich weiß dass ich für irgendwas zu blöd bin.. ich komm aber nich drauf, was es ist:

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
36
37
38
39
40
41
42
43
44
45
46
// Beispielprogramm 1

// ==================

// Erstellen des Fensters und Aufrufen der Nachrichtenschleife. Die dafür nötigen

// Funktionen sind in der Datei InitWindow.cpp gespeichert.


#include <Windows.h>
#include <Tribase.h>
#include "..\\..\\Allgemeines\\InitWindow.h"
#include "Resource.h"

// Render-Funktion (leer)

tbResult Render(float fNumSecsPassed)
{
    return TB_OK;
}

// Move-Funtion (leer)

tbResult Move(float fNumSecsPassed)
{
    return TB_OK;
}

// Windows-Hauptfunktion

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char *pcCmdLine,
                   int iShowCmd)
{
    // TriBase-Engine initialisieren

    tbInit();

    // Fenster initialisieren

    InitWindow(640, 480, "Beispielprogramm Nr.1: Fenster", 
               LoadIcon(hInstance, MAKEINTRESOURCE("Icon1.ico")));             

    // Nachrichtenschleife

    tbDoMessageLoop(Render, Move);

    // Fenster herunterfahren

    ExitWindow();

    // Engine herunterfahren

    tbExit();

    return 0;
}


Folgende Fehlermeldungen bekomm ich:

C-/C++-Quelltext

1
2
3
4
5
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbExit(void)" (__imp_?tbExit@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl ExitWindow(void)" (?ExitWindow@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbDoMessageLoop(enum tbResult (__cdecl*)(float),enum tbResult (__cdecl*)(float))" (__imp_?tbDoMessageLoop@@YA?AW4tbResult@@P6A?AW41@M@Z0@Z)" in Funktion "_WinMain@16".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl InitWindow(int,int,char *,struct HICON__ *)" (?InitWindow@@YA?AW4tbResult@@HHPADPAUHICON__@@@Z)" in Funktion "_WinMain@16".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) enum tbResult __cdecl tbInit(void)" (__imp_?tbInit@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".


Ich vermute, dass es was mit einer nicht gelinkten lib datei zu tun hat... ich weiß aber nicht welche.

:cry: Bitte helft einem armen Schwachkopf wie mir... :(

2

05.09.2006, 09:55

im Debug mode musst du die TriBaseD.lib linken und im Release mode musst du die TriBase.lib linken.
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

Hengstli

Treue Seele

  • »Hengstli« ist der Autor dieses Themas

Beiträge: 147

Wohnort: Dettenheim

  • Private Nachricht senden

3

05.09.2006, 12:04

So.. ein Teil der link errors ist weg, jetzt sind noch 2 übrig:

C-/C++-Quelltext

1
2
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl ExitWindow(void)" (?ExitWindow@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl InitWindow(int,int,char *,struct HICON__ *)" (?InitWindow@@YA?AW4tbResult@@HHPADPAUHICON__@@@Z)" in Funktion "_WinMain@16".


Ich denke mal dass ich da was an der main Funktion falsch gemacht hab... Kann aber nicht sein... Ich hab am Anfang eine Windows-Anwendung erstellt, was man ja eigentlich tun müsste...

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

4

05.09.2006, 12:07

Ich sehe keine Funktionsimplementierung für InitWindow oder ExitWindow....
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Sheddex

unregistriert

5

05.09.2006, 12:13

C-/C++-Quelltext

1
#include "..\\..\\Allgemeines\\InitWindow.h"


;)

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

6

05.09.2006, 12:18

Sowas liest man immer wieder. Ihr müsst mal lernen, zwischen einen Compile-Fehler, einem Link-Fehler (wie in diesem Fall) und einem logischen Fehler zu unterscheiden.

Linker-Fehler haben in den allermeisten Fällen gar nichts mit dem Quelltext zu tun, und da hilft ein solcher Auszug nur wenig. (Ausnahme: wenn man Libs mit #pragmas einbindet)

Wenn man diese Unterscheidung im Hinterkopf behält, schafft man es deutlich leichter, selbst auf die Lösung des Problems zu kommen.

Noch eine Bemerkung dazu: Nur weil man einen Header einer Bibliothek einbindet bedeutet das noch lange nicht, dass man das Programm hinterher linken kann. In den meisten Fällen kann man es blos compilieren.

Gruss,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

7

05.09.2006, 12:38

http://msdn2.microsoft.com/de-de/library/8x5x43k7.aspx

Hengstli

Treue Seele

  • »Hengstli« ist der Autor dieses Themas

Beiträge: 147

Wohnort: Dettenheim

  • Private Nachricht senden

8

05.09.2006, 19:41

Vielen dank an alle...
Ich habs jetzt zum Laufen gebracht..
Ich habe 2 Fehler gemacht:
1. Ich hatte (mal wieder) vergessen, die TribaseD.lib und die Tribase.lib zu linken
2. Habe ich den Fehlervollständig wegbekommen, indem ich ein Leeres Projekt öffnete und keine Win32-Anwendung.

Jipie es geht!!! :roll:

9

10.10.2010, 02:42

Hallo,

ich weiß das Problem ist schon ein wenig älter aber Trotzdem:

ich habe genau die gleichen 2 Fehler und das hier war der einzige Thread den google ausgespuckt hat...

Quellcode

1
2
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl ExitWindow(void)" (?ExitWindow@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16".
1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl InitWindow(int,int,char *,struct HICON__ *)" (?InitWindow@@YA?AW4tbResult@@HHPADPAUHICON__@@@Z)" in Funktion "_WinMain@16".


Ich habe das Plattform SDK Server 2003 SP1 installiert und gelinkt.
Ich habe das DirectX 9.0c August 2008 installiert und gelinkt
Ich habe das Tribase gelinkt.
Ich habe den Ordner Allgemein zu den Includes hinzugefügt.

Ich benutze Visual C++ Express 2010 und habe ein komplett neues LEERES Projekt erstellt.
Dort wie oben geschrieben alles gelinkt.

Dann habe ich noch folgende libs hinzugefügt (unter: Projekteigenschaften / Linker / Eingabe / Zusätzliche Abhängigkeiten)
tribased.lib
d3d9.lib
d3dx9.lib
dxerr9.lib

Ausserdem habe ich eine neue resource.h erstellt und den code aus der resource.h von Kapitel 02 / Beispiel 01 genommen.
Genauso wie die leicht angepasste cpp datei:

Quellcode

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Kapitel 2
// Beispielprogramm 01
// ===================
// Erstellen des Fensters und Aufrufen der Nachrichtenschleife.
// Die dafür nötigen Funktionen sind in der Datei InitWindow.cpp
// gespeichert.

#include <Windows.h>
#include <TriBase.h>
#include <InitWindow.h>
#include "Resource.h"

// ******************************************************************
// Render-Funktion
tbResult Render(float fNumSecsPassed)
{
    return TB_OK;
}

// ******************************************************************
// Move-Funktion
tbResult Move(float fNumSecsPassed)
{
    return TB_OK;
}

// ******************************************************************
// Windows-Hauptfunktion
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char* pcCmdLine,
                   int iShowCmd)
{
    // TriBase-Engine initialisieren
    tbInit();

    // Fenster initialisieren
    InitWindow(640, 480, "Beispielprogramm Nr. 2: Fenster",
               LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)));

    // Nachrichtenschleife
    tbDoMessageLoop(Render, Move);
    
    // Fenster herunterfahren
    ExitWindow();

    // Engine herunterfahren
    tbExit();

    return 0;
}

// ******************************************************************


Hat jemand ne Idee was ich da machen könnte??
Andere DirectX Projekte (also ohne tribase) funktionieren, am DX kanns also nicht liegen.
Ich arbeite nur im Debug habe also einfach fest die Tribased.lib gelinkt.

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

10

10.10.2010, 09:35

Was für ein Projekt hast du denn erstellt? Hengstli hat oben erwähnt, dass er genau diese beiden Fehler wegbekommen hat, indem er ein leeres Projekt und kein Win32 Projekt genommen hat.

Mfg Harry222

Werbeanzeige