SDL(Mehrere Functionen und cpp dateien)
-
Hi,
vielen dank @SnorreDev.Die 8Fehler sind verschwunden und
er fängt auch an zu Linken, doch dann kommt noch eine Fehlermeldung.
(Ich denke ich bin auf den Kopf gefallen, denn es scheint so das
nichts was ich tue funktioniert und mein dasein begründet)
**--------------------Konfiguration: code - Win32 Debug--------------------
Linker-Vorgang läuft...
code.obj : error LNK2001: Nichtaufgeloestes externes Symbol "struct SDL_Surface * screen" (?screen@@3PAUSDL_Surface@@A)
Pyramidal-Engine.obj : error LNK2001: Nichtaufgeloestes externes Symbol "struct SDL_Surface * screen" (?screen@@3PAUSDL_Surface@@A)
Debug/code.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.code.exe - 3 Fehler, 0 Warnung(en)
**
Gut, ich weiß das ist nun sicher ein absuluter Anfängerkram,
denn es hat sicher etwas mit dem Include File au sich.Tut mir leid wenn ich euch nerve, vielleicht will mir trotzdem
jemand antworten, wenn dem so sei, vielen dank im vorraus.cu max
-
Linke die SDL Library mit, dann ist das Problem weg. Und bei VC mußt du das ganze als Multithreaded laufen lassen wegen der SDL.
-
Hi,
sdl.lib und sdlmain.lib sind wie immer gelinkt gewesen,
dass mit dem Multithreadet muss ich mal schauen wo ichs einstellen
kann.Vielen dank erstmal.
PS:Was bedeutet das Multithreadet?cu max
-
Das dein Programm mehrere "Threads" / Prozesse nebeneinander laufen lassen kann.
Ein Single Threaded Prog sieht so aus:
A -> B -> C
Ein Multithreaded kann so aussehen:
A -> B -> E \-> C -> D
Hoffe du verstehst was ich meine
-
Hi,
vielen dank.
Eigentlich verstehe ichs nicht.
Naja, aber was hat das damit zu tuen das dass Programm nicht läuft?
Ist das dafür notwendig?Kann mir dazu jemand vielleicht einen
Tutorial link geben?cu max
-
Ganz einfach - die SDL ist eine Multithreaded Library, also muß das Programm, wo die Library nutzt auch mit Multithreading umgehen können.
Tutorial zu SDL? Mhhh - hab ich mal wo gesehen, glaube sogar von einem der Boardmitglieder hier. Schau mal in die FAQ vielleicht gibts da welche.
-
Master_Max schrieb:
Eigentlich verstehe ichs nicht.
Das bedeutet daß Dein Prog mehrere Sachen gleichzeitig machen kann...
-
nicht gleichzeitig, sondern parallel
-
kind schrieb:
nicht gleichzeitig, sondern parallel
Was genau das gleiche ist...
-
Hi,
vielen dannk @all.
Gibt es ein Tutorial was das genau erklärt?@Snorre, Tutorials zu SDL hab ich ein paar gute,
aber da sich die Leute dort keine Engine schreiben,
wird auch nicht darauf eingegangen, sie machen alles
direkt im Programmcode.Vielen dank im vorraus.
cu max
-
Das hat ja auch nix mit der SDL zu tun, dass sind C/C++ Grundlagen.
-
Hi,
in C++ hab ich ja auch eine übung zu dem Thema schon davor
gecodet, die ging.In der erstellte ich zwei .cpp files
und includierte sie.
In der main rief ich eine funktion der anderen cpp file auf.
Das ging einwandfrei, also dachte ich das dass in der SDL
auch gehen sollte.Code:Main.cpp
#include <iostream.h> int printfunction(); int main(){ printfunction(); return 0; }
Code:Printfunction.cpp
#include <iostream.h> int printfunction(){ cout << "Es geht also"; return 0; }
Ich denke das ist verkürtzt das was ich in meinem Programm tue
(Bis darauf das ich keine .h files benutze, das sollte aber keine
rolle spielen)cu max
-
Hi,
ist das was ich da gemacht hab vom Prinzip her das selbe?
(Eigentlich ruf ich ja bei meinem anderen proc auch nur functionen
aus der anderen .cpp auf.)
Vielen dank im vorrauscu max
-
Eigentlich ist es das selbe, da du den Prototyp ja vor deiner Funktion deklarierst. Allerdings solltest du schon alleine wegen der Sauberkeit auf Source ( CPP, CC, C ) und Header ( H ) zurückgreifen. Vorallem kannst du ein Headerfile mehrfach includen, während du mit dem Prototyp vor deinem Programm in mehreren Dateien ärger bekommen könntest, wegen "Object multiple defined" oder so.
-
Hi,
hmmm um ganz ehrlich zu sein hab ich noch nie wirklich
mit .h files gearbeitet, weis jetzt auch gar nicht genau
was ich darin alles machen kann, aber ich hab hier genügend literatur
und werd die Lücke stopfen.SnorreDev shrieb:
solltest du schon alleine wegen der Sauberkeit auf Source ( CPP, CC, C ) und Header ( H ) zurückgreifen.Hab ich wohl nicht richtig dazugeschrieben:(so ist es also in echt)
MAIN.cpp
#include <iostream.h> int printfunction(); int main(){ printfunction(); return 0; }
Printfunction.cpp
C/C++ Code: #include <iostream.h> int printfunction(){ cout << "Es geht also"; return 0; }
cu max
-
Hi.
Ist das nun das gleiche?Vielen dank im vorraus.
cu max
-
Hi,
da niemand antwortet, vermute ich jetzt einfach mal dass
meine Theorie ein völliger schwachsinn ist, welcher
nie das Licht des Bildschirms erblicken hätte sollen.
Trotzdem danke.Wäre nett, wenn mir jemand einen Link zu nem Tut oder soetwas
geben könnte.cu max
-
Hi,
hab gegooglet.
http://www.codeworx.org/cpp_tuts_1_5.php
für alle denen Multithreading noch ein Rätsel ist.cu max
-
ich glaubr das problem is, niemand weiß wo eigentlich dein problem liegt.
-
Hi,
ich weiß in Foren drücke ich mich
oft sehr umständlich aus.Mein Problem ist, das der erste code
nicht läuft(angeblich wegen Multithreading)
(Die Fehler sind rausgebügelt)Aber ich bekomme diese
Fehlermeldung:
**--------------------Konfiguration: code - Win32 Debug--------------------
Linker-Vorgang läuft...
code.obj : error LNK2001: Nichtaufgeloestes externes Symbol "struct SDL_Surface * screen" (?screen@@3PAUSDL_Surface@@A)
Pyramidal-Engine.obj : error LNK2001: Nichtaufgeloestes externes Symbol "struct SDL_Surface * screen" (?screen@@3PAUSDL_Surface@@A)
Debug/code.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.code.exe - 3 Fehler, 0 Warnung(en)
**Obwohl dieser Code auch läuft
MAIN.cpp#include <iostream.h> int printfunction(); int main(){ printfunction(); return 0; }
Printfunction.cpp
#include <iostream.h> int printfunction(){ cout << "Es geht also"; return 0; }
Ich tue ja in beiden Dateien vom Prinzip her dasselbe,
ich rufe eine Function aus einer anderen C++ datei auf,
mit der ich auch davor Prototyping betrieben habe.
Aber es heißt ja, das währe C++ Grundwissen, nun aber
unter C++ läuft es ja.Also, nun langsam dämmert es mir warum es nicht geht
Ich habe den C++ code in einer DOS-Box ausgeführt, der einfacheheit
zur liebe, aber DOS benötigt kein Multithreading, während eine Win32-
Anwendung dies zwingend benötigt.cu max