Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Rodney Junior JLI'ler
Anmeldedatum: 24.09.2003 Beiträge: 60
Medaillen: Keine
|
Verfasst am: 22.12.2003, 13:12 Titel: Surface-Fehler *BITTE HELFEN* |
|
|
Hallo Leute,
ich habe in meinem kleinen Spiel (bin noch ziemlicher Noob)
ein bisschen was geändert weil ich mir eine eigenen Surface-Verwaltungsklasse schreiben wollte. Jetzt gibt er folgenden Fehler aus
Code: |
Deleting intermediate files and output files for project 'DirectDrawClass - Win32 Debug'.
--------------------Configuration: DirectDrawClass - Win32 Debug--------------------
Compiling...
Blitklasse.cpp
DirectDrawClass.cpp
DXAudioClass.cpp
Effektklasse.cpp
global.cpp
Kanuklasse.cpp
MainEngine.cpp
ManagerMain.cpp
Objektklassen.cpp
Spielschleife.cpp
Linking...
ManagerMain.obj : error LNK2001: unresolved external symbol "struct IDirectDrawSurface7 * idiot" (?idiot@@3PAUIDirectDrawSurface7@@A)
Debug/DirectDrawClass.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
DirectDrawClass.exe - 2 error(s), 0 warning(s) |
Irgendwas stimmt mit dem Surface idiot nicht aber aus dieser Meldung werde ich nicht schlau...
-Danke im Vorraus
Zuletzt bearbeitet von Rodney am 23.12.2003, 18:03, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 22.12.2003, 13:32 Titel: |
|
|
Hast du alle nötigen Libs und Header eingebunden?
Wenn ja, stimmen die Pfade?
Im Buch steht im Installationskapitel, wie man die Pfade richtig setzt.
Sonst käme vielleicht noch ein Schreibfehler in Frage _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Rodney Junior JLI'ler
Anmeldedatum: 24.09.2003 Beiträge: 60
Medaillen: Keine
|
Verfasst am: 22.12.2003, 15:23 Titel: |
|
|
Ich hatte das Surface falsch deklariert, daran lags...
Ich habe mir eine Surface-Ersteller-Funktion geschrieben
Code: |
void SurfaceErstellen(LPDIRECTDRAWSURFACE7 surface, LPCTSTR File)
{
surface = DDrawObjekt.CreateSurfaceFromBitmap(File,0,0);
DDCOLORKEY ColorKey;
ColorKey.dwColorSpaceLowValue = RGB(255,0,255);
ColorKey.dwColorSpaceHighValue = RGB(255,0,255);
surface->SetColorKey(DDCKEY_SRCBLT,&ColorKey);
}
|
Diese rufe ich jetzt folgendermaßen auf
Code: |
LPDIRECTDRAWSURFACE7 idiot = NULL;
Blitter.SurfaceErstellen(idiot,"pictures\\idiot.bmp");
|
Allerdings bricht er das Spiel jetzt immer ohne Fehlermeldung ab wenn ich das Surface (idiot) blitten will.
Woran liegt das???
-Danke im Vorraus, Rodney |
|
Nach oben |
|
|
Rodney Junior JLI'ler
Anmeldedatum: 24.09.2003 Beiträge: 60
Medaillen: Keine
|
Verfasst am: 23.12.2003, 10:47 Titel: |
|
|
hat keiner eine Idee woran es liegen könnte? |
|
Nach oben |
|
|
KI JLI Master
Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 23.12.2003, 10:54 Titel: |
|
|
Viellelicht liegt es am Pfad.
Hast du es schon mit einem absoluten Pfad probiert?
Also z.B.
"C:\\ordner1\\idiot.bmp" |
|
Nach oben |
|
|
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 23.12.2003, 12:22 Titel: |
|
|
Ja aber auch wenn der Pfad nicht stimmt sollte das Programm eigentlich nicht abbrechen. |
|
Nach oben |
|
|
Rodney Junior JLI'ler
Anmeldedatum: 24.09.2003 Beiträge: 60
Medaillen: Keine
|
Verfasst am: 23.12.2003, 12:53 Titel: |
|
|
Beni5 hat Folgendes geschrieben: | Ja aber auch wenn der Pfad nicht stimmt sollte das Programm eigentlich nicht abbrechen. |
also der Pfad stimmt, wenn er nicht stimmt startet das Programm erst gar nicht...
Das Problem muss irgendwie dabei liegen das er das Surface nicht richtig erstellt! Er beendet nämlich genau dann wenn das surface geblittet werden soll... |
|
Nach oben |
|
|
Rodney Junior JLI'ler
Anmeldedatum: 24.09.2003 Beiträge: 60
Medaillen: Keine
|
Verfasst am: 23.12.2003, 19:25 Titel: |
|
|
Irgendwie muss hier das Surface falsch erstellt werden
Code: |
void SurfaceErstellen(LPDIRECTDRAWSURFACE7 surface, LPCTSTR File)
{
surface = DDrawObjekt.CreateSurfaceFromBitmap(File,0,0);
DDCOLORKEY ColorKey;
ColorKey.dwColorSpaceLowValue = RGB(255,0,255);
ColorKey.dwColorSpaceHighValue = RGB(255,0,255);
surface->SetColorKey(DDCKEY_SRCBLT,&ColorKey);
}
|
ich muss doch nur das surface deklarieren (LPDIRECTDRAWSURFACE7 surface) und dann diese Funktion mit den entsprechenden Parametern aufrufen oder???
also :
Code: | SurfaceErstellen(surface,"bild.bmp"); |
- DANKE IM VORRAUS |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 23.12.2003, 20:13 Titel: |
|
|
Der Fehler ist simpel: Du übergibst den Zeiger by value, d.h. er wird nicht in idiot gespeichert... änder es mal so um und es sollte klappen:
Code: |
void SurfaceErstellen(LPDIRECTDRAWSURFACE7 & surface, LPCTSTR File)
{
surface = DDrawObjekt.CreateSurfaceFromBitmap(File,0,0);
DDCOLORKEY ColorKey;
ColorKey.dwColorSpaceLowValue = RGB(255,0,255);
ColorKey.dwColorSpaceHighValue = RGB(255,0,255);
surface->SetColorKey(DDCKEY_SRCBLT,&ColorKey);
}
|
Am Aufruf wird nichts verändert. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
|