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

18.06.2004, 01:40

Probleme bitte um Hilfe

Hallo zusammen,

ich habe erst kürzlich das Buch gekauft und ich finde es wesentlich besser als die ganzen anderen die ich habe ;)
Aber leider habe ich ein Problem mit dem Beispielprogramm auf Seite 92/93 des Buches. Wenn ich den Code der auf den Seiten steht verwende und anschließend ausführe dann erhalte ich Meldungen wie:

error LNK2001: Nichtaufgeloestes externes Symbol _Direct3DCreate9@4
fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

oder das z.B. Resource.h nciht gefunden werden kann obwohl die in diversen ordnern vorhanden ist.

Gehe ich richtig der Annahme das man die ganzen Beispielprogramme etc. machen und speichern muss um die Nachfolgenden Programme wie auf Seite 114 (Das erste Dreieck) zum laufen zu bekommen?

Ich habe auch schon versucht die fertigen Programme die auf der CD enthalten sind zu starten aber leider auch ohne Erfolg. Es werden dabei bis zu 15 Fehler angezeigt ???

Hoffe Ihr könnt mir etwas helfen.

Danke Gruß Sticky

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

2

18.06.2004, 12:46

d3d9 linken

3

18.06.2004, 15:31

Ich habe mal das Beispielprogramm von Seite 92/93 unten eingefügt und darunter meine Fehlermeldung. Ich habe alle Einstellungen wie es am Anfang des Buches beschrieben ist durchgeführt etc.
Is bestimmt ne ganz simple Sache die Fehlermeldung und das Linken der D3D9.

#include <Windows.h>
#include <StdIO.h>
#include <D3D9.h>

int g_iNumAdapters;
D3DADAPTER_IDENTIFIER9* g_pAdapters; // Adapterliste
PDIRECT3D9 g_pD3D = NULL; // IDirect3D9-Schnittstelle

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
char* pcCmdLine,
int iShowCmd)
{
char acAdapterInfo[1024];


// Schnittstelle erzeugen
g_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
if(g_pD3D == NULL)
{
// Fehler beim Erstellen der Schnittstelle!
MessageBox(NULL, "Direct3D 9 konnte nicht initialisiert werden!\
Installieren Sie bitte die neueste DirectX-Version.",
"Fehler", MB_OK | MB_ICONEXCLAMATION);

return 1;
}

// Anzahl der Adapter ermitteln
g_iNumAdapters = g_pD3D->GetAdapterCount();

// Speicher reservieren und Informationen über jeden Adapter sammeln
g_pAdapters = new D3DADAPTER_IDENTIFIER9[g_iNumAdapters];

for(int iAdapter = 0; iAdapter < g_iNumAdapters; iAdapter++)
{
if(FAILED(g_pD3D->GetAdapterIdentifier(iAdapter, 0,
&g_pAdapters[iAdapter])))
{
// Fehler
MessageBox(NULL, "Adapterinformationen konnten nicht abgefragt werden!",
"Fehler", MB_OK | MB_ICONEXCLAMATION);

// Aufräumen
g_pD3D->Release();
delete[] g_pAdapters;
return 1;
}

// Adapterinformationen anzeigen
sprintf(acAdapterInfo, "Adapter-ID: %d\
Name: %s\
Treiber: %s\
TreiberVersion: %d",

iAdapter,
g_pAdapters[iAdapter].Description,
g_pAdapters[iAdapter].Driver,
g_pAdapters[iAdapter].DriverVersion);

MessageBox(NULL, acAdapterInfo, "Adapter gefunden",
MB_OK | MB_ICONEXCLAMATION);
}

// Aufräumen
g_pD3D->Release();
delete[] g_pAdapters;

return 0;
}

Fehlermeldung:

Kompilierung läuft...
01.cpp
Linker-Vorgang läuft...
01.obj : error LNK2001: Nichtaufgeloestes externes Symbol _Direct3DCreate9@4
Debug/01.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

01.exe - 2 Fehler, 0 Warnung(en)

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

4

18.06.2004, 16:34

Es gibt zwei Möglichkeiten zum Linken:

entweder machst du das per Einstellungen in deiner IDE oder per Code.
Für die Code-Lösung musst du am Anfang afaik nur Folgendes einfügen:

#pragma comment(lib, "d3d9.lib")

Wenn du das über die IDE machen willst, musst du unter Projekteinstellungen und dann dort bei Linker halt d3d9.lib noch in die Zeile einfügen. Aber versuchs mal mit der Zeile (s.o.).

Bis dann, hoffe ich konnte helfen,
u_int
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

5

18.06.2004, 22:06

Danke hat funktioniert. :)

6

18.06.2004, 23:07

Wenn ich das Beispielprogramm erweitere (S. 95)
dann klappt soweit alles ganz gut bis auf ein unerklärliches kleines Problem.

Er zeigt mir in Zeile 122 ein "Unerwartetes Dateiende an"
Seltsam nur das da gar nix steht und der gesamte Code bereits 4 Zeilen vorher schon zu Ende ist. Verstehe das irgendwie nicht.
Hab schon diverse verschiedene Debugmethoden versucht aber ich bekomm jedenfalls für mich keinen konkreten Hinweis wo der Fehler liegen soll/könnte.

Gruß Sticky

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

7

18.06.2004, 23:59

D.h. Du hast nicht alles vor dem Dateiende abgeschlossen. Also z.B. zu einem "{" fehlt das schliessende "}" und daher erwartet der Compiler nicht das Dateiende.
"Games are algorithmic entertainment."

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

8

18.06.2004, 23:59

unerwartetes dateiende kommt doch immer wenn irgendwo ne "}" fehlt, oder z.b. nach ner Definition einer Struktur ein ";".. ALlerdings kommen dann normalerweise 102 Fehler oder so, bis eben die Kompilierung abgebrochen wird.. ;) schau mal obste nich wo ne schließende Klammer vergessen hast..

mfg

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

9

19.06.2004, 00:01

argh nein, etz war schon wieder wer schneller.. gibts halt nicht, immer wenn ich was posten will schreitb kurz vorher schon jmd die antwort ohne dass ichs merk... grml ^^ :-D naja, wenigstens ist die aussage die gleiche ;) von daher wirds wohl stimmen :-D ;)

10

19.06.2004, 09:20

Ok danke funkzt jetzt :)

Werbeanzeige