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.08.2012, 16:11

VC++ 2010 und SDL

Hi,

ich habe nach einer längeren Pause wieder Lust zu programmieren und wollte an alten Projekten weiter arbeiten...
Nachdem ich die aktuellen SDL Lib's runtergeladen habe und ein passenden Tutorial fand, wie diese eingebunden werden (ich spüre tgl. die vergesslichkeit..)
...passierte nix.
Zuerst Probleme mit der SDL_Image (gibts die noch? Nirgends in den "Lib's" zu finden), nachher mit der SDL_Image.dll, weiter über die SDL.dlll und weiter zu den Funktionen SDL_Quit usw.

Hab ich was verpasst, was die eEinstellungen angeht?

Ist mir doch ein Unding, das das so gar nicht läuft.

2

04.08.2012, 17:49

Naja die üblichen Einstellungen wären:
  • Include-Verzeichnisse angeben
  • lib-Verzeichnisse angeben
  • libs linken
Aber ob die von dir erwähnten Dinge noch in SDL vorhanden sind kann ich jetzt aus dem Gedächnis auch nicht sagen :D

EDIT: Vllt hilft ja dieser Link
Anscheinend muss man nur SDL.lib und SDLmain.lib linken
"Wer Angst hat, dass ihm seine Ideen geklaut werden, der scheint nicht viele zu haben. "

3

04.08.2012, 18:09

ist eigentlich alles drinn'

beide verzeichnisse sind eingebunden.
libs lade ich mit:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#define WIN32_LEAN_AND_MEAN

#pragma comment(lib, "sdl.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "winmm.lib")

//#pragma comment(lib, "SDL_image.lib")
#pragma comment(lib, "opengl32.lib")
...
#pragma comment(lib, "SDLmain.lib")


oder gibt es vielleicht da die probs?
Also, wenn ich, wie o.a. die SDL_image aus-kommentiere, findet er fehler bei o.a. SDL_Quit, SDL_GL_SwapBuffers, usw.


Ok, hat sich geklärt.
Fehler war: laden durch pragma comment ging net(bisher ka wieso, mal schaun).
Und geladen wurde als Windows Tool, muss jedoch für Konsole geladen werden.

Thema kann wohl geschlossen werden.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Eroda« (04.08.2012, 19:05)


eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

4

04.08.2012, 20:30

Ok, hat sich geklärt.
Fehler war: laden durch pragma comment ging net(bisher ka wieso, mal schaun).
Und geladen wurde als Windows Tool, muss jedoch für Konsole geladen werden.

Libraries mit pragma comment zu linken ist sowieso nicht so eine gute Idee, da es Compiler spezifisch ist, den Sourcecode 'verunreinigt' und nicht dem Standard entspricht, ausserdem gibt es ja für irgend etwas die Projekt Einstellungen. ;)

Hast du schon einmal einen Blick auf SFMLgeworfen? Hat meiner Meinung nach eine einfachere und verständlichere API und bietet von Haus aus auch mehr Funktionalitäten. Könnte für den (Wieder)Einstieg evtl. einfacher sein.
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

S4My

unregistriert

5

04.08.2012, 21:59

Libraries mit pragma comment zu linken ist sowieso nicht so eine gute Idee, da es Compiler spezifisch ist, den Sourcecode 'verunreinigt' und nicht dem Standard entspricht, ausserdem gibt es ja für irgend etwas die Projekt Einstellungen.

Vollkommen korrekt, nur unterstützt der in diesem Fall verwendete Compiler diese Direktive, von daher sollte die Tatsache das "#pragma" nicht dem Standard entspricht weniger wichtig sein ;) .

Solange er den Code nicht irgendwem zur freien Verfügung stellen möchte sehe zumindest ich kein Problem darin dieses Schlüsselwort einzubauen, deshalb ist das mit dem Code "verunreinigen" auch eher relativ. Mal ganz davon abgesehen das es mit diesem Befehl nicht geklappt hat :D .

Hast du schon einmal einen Blick auf SFMLgeworfen? Hat meiner Meinung nach eine einfachere und verständlichere API und bietet von Haus aus auch mehr Funktionalitäten. Könnte für den (Wieder)Einstieg evtl. einfacher sein.

Stimme ich zu. Die SFML ist wesentlich einfacher zu verstehen und noch dazu objektorientiert, man muss sich seine Sprite-Klasse etc. nicht selbst schreiben. Features wie etwa das laden von JPEGs sind auch ohne weitere DLLs mit an Bord, ebenso wie das laden von Musik. Auch von der Geschwindigkeit soll die SFML der SDL überlegen sein, kann ich aber nicht zweifelsfrei bestätigen, weil noch nicht wirklich getestet ;) .

Einen Blick zu riskieren würde sich lohnen, was dann letzten Endes besser ist bleibt ohnehin dir überlassen.

Mlg
S4My

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

6

05.08.2012, 00:48

Solange er den Code nicht irgendwem zur freien Verfügung stellen möchte sehe zumindest ich kein Problem darin dieses Schlüsselwort einzubauen, deshalb ist das mit dem Code "verunreinigen" auch eher relativ. Mal ganz davon abgesehen das es mit diesem Befehl nicht geklappt hat .

Klar kann man als einzelner Programmierer erlauben alles so zu machen wie man möchte, jedoch ist es immer gut seinen Programmierstil konstant zu halten, das heisst auch in Hobby Projekten so zu programmieren, als wäre Code, welchen andere damit arbeiten müssten. Weiter ist es meiner Meinung nach falsch sich nicht an den Standard zu halten (es sei den praktisch alle grossen Compiler untersützen das Feature, z.B. #pragma once). Und wenn man stets im Hinterkopf behält, dass die Applikation auch auf einer anderen Platform laufen soll, dann gewöhnt man sich schon einen Stil an, welcher später evtl. wichtig sein könnte und man müsste nichts/weniger mehr neu lernen falls man die Platform wechselt.
Ich persönlich mag das folgende Zitat:

Zitat

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.


Auch von der Geschwindigkeit soll die SFML der SDL überlegen sein, kann ich aber nicht zweifelsfrei bestätigen, weil noch nicht wirklich getestet .

Es kommt vorallem auf die gewünschte Aktion drauf an. SFML ist schneller für viele Sprites und Texturen (z.B. Tilemap), aber für Pixelmanipulation kann SDL immer noch etwas schneller sein.
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

S4My

unregistriert

7

05.08.2012, 14:10

Ja, das Zitat hat was :D .

meiner Meinung nach falsch sich nicht an den Standard zu halten

Das ist durchaus nicht schlecht, jedoch gibt es kaum Sachen die wirklich von A bis Z standardisiert sind. Wenn man jetzt allein von der Variablengröße ausgeht, hier kann man auch nur sagen "ist für gewöhnlich so". Die "#pragma"-Direktive ist und bleibt ein Streitthema. Egal ob es nun um "#pragma once" oder anderes geht.

Ach übrigens, der Gebrauch dieses Befehls muss nicht unbedingt ausschließen das ein anderer mit ähnlicher Wirkung nicht auch verwendet wird.

Spaßeshalber hab ich einmal "stdint.h" aufgemacht und folgendes Muster gesehen:

C-/C++-Quelltext

1
2
3
4
5
6
7
#pragma once
#ifndef _INCLUDEGUARD
#define _INCLUDEGUARD

//code

#endif

Somit ist für jeden was dabei. Wird "#pragma once" nicht unterstützt, so kann man auf die Guards zurückgreifen.

So oder so ähnlich kann man das auch in diesem Fall handhaben. Er könnte, wenn er dann wirklich den Code öffentlich machen will, angeben, dass bei Compilern die "#pragma comment" nicht unterstützen, die nötigen LIBs manuell eingebunden werden müssen. Das spart jenen die Unterstützung dieser Methode seitens des Editors erhalten Zeit und Arbeit und andere müssen nur ein paar Schritte mehr tätigen. Ich denke das ist professioneller als einfach zu sagen man verzichte gleich darauf.

Sich an Standards zu halten ist gut, aber man sollte auch nicht auf Möglichkeiten verzichten, die es einem vielleicht sogar einfacher machen würden. Man könnte so auf großes Potenzial der Sprache oder des Compilers verzichten, das wäre ziemlich schade, denkst du nicht?

Aber das ist nur meine Meinung dazu.

Mlg
S4My

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

8

05.08.2012, 15:20

Somit ist für jeden was dabei. Wird "#pragma once" nicht unterstützt, so kann man auf die Guards zurückgreifen.

Ja diese Methode wird oft auch empfohlen, da der Code dadurch immer noch dem Standard entspricht und nach diesem ein klar definiertes Verhalten hat. Wenn man also auf Nummer sicher gehen will, jedoch auch Compiler spezifische Funktionen verwenden will, kann man es so machen.
Sich an Standards zu halten ist gut, aber man sollte auch nicht auf Möglichkeiten verzichten, die es einem vielleicht sogar einfacher machen würden. Man könnte so auf großes Potenzial der Sprache oder des Compilers verzichten, das wäre ziemlich schade, denkst du nicht?

Ich persönlich würde wahrscheinlich immer noch einen Version nach dem Standard verwenden anstatt Compiler spezifische Methoden, aber dies muss natürlich nicht für andere gelten und diese sollen frei wählen was sie wollen.
Wenn es nun Dinge gibt, welche einem das Programmieren einfacher machen, die Compilier- oder Linkzeit verringert kann man sich überlegen, ob man solchen Code übernehmen soll und evtl. macht es dann auch Sinn.
Im Beispiel mit dem #pragma comment macht es jedoch meiner Meinung nach auf einer logischen Ebene nicht sehr viel Sinn, denn die "Aufgabe" des Programmier Codes ist nicht, das Angeben von den zuverlinkenden Libraries, dies ist eine Einstellung, welche man dem Linker mitteilt, darum macht es viel mehr Sinn dies in den Projekteinstellungen unterzubringen.

Aber wie bereits gesagt, jedem steht diese Entscheidung frei und ich teile nur meine Meinung (und Erfahrung) mit. :)
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

S4My

unregistriert

9

05.08.2012, 16:40

Jop, mache ich auch, also zumindest habe ich das versucht :D .

Stimmt, solche Dinge sollte man schon via Projekteinstellungen lösen, da gebe ich dir recht. Mir ging es nur um compilerspezifischen Code im allgemeinen :) .

War ein nettes Pläuschchen, gerne wieder :D .

Aber ich denke man kann diesen Topic dann wohl schließen oder zumindest als gelöst kennzeichnen.

Mlg
S4My

Werbeanzeige