Forum: PC-Programmierung Linien und Rechteck zeichnen mit SDL


von SDL_Anfänger (Gast)


Lesenswert?

Guten Abend,

ich versuche seit ein paar Stunden mit der "SDL_gfx" Library eine Linie 
zu zeichnen. Leider funktioneirt dies nicht.
Als include Datei habe ich die #include "SDL_gfxPrimitives.h" angegeben.
Mit der Funktion "vlineColor" kann man eine Linie zeichnen.
Bei übersetzen erscheint immer diese verdammt Fehlermeldung:

Fehler  1  error LNK2001: Nicht aufgelöstes externes Symbol 
"__imp__vlineColor".  Test.obj  Test

Fehler  2  fatal error LNK1120: 1 nicht aufgelöste externe Verweise. 
C:\Test\Test.exe  1  Test

Als Programmiertool verwende ich Microsoft Visula Studio C++ 2008.
Die DLL "SDL_gfx.dll" habe ich bereits in windows\system und 
windows\system32 reinkopiert.

Kann mir dazu jemand weiterhelfen?

von SDL_Anfänger (Gast)


Lesenswert?

Die Headerdatei sowie die DLL-Datei sind ja in den entsprechenden 
Verzeichnissen vorhanden. Egal welche Funktion ich davon benutzt, 
erscheint immer dieser Linker Fehler. Woran kann das liegen? Was muss 
ich da tun damit ich diese Funktionen nutzen kann?

von Tom (Gast)


Lesenswert?

Das DLL/HEader Files sind nicht genug, Du brauchst noch eine LIB-Datei. 
Diese Datei in Projekt zugeben und Path in der Konfiguration auch noch 
unter "additinal libraries" eintragen. Dann sollte es gehen ...

von SDL_Anfänger (Gast)


Lesenswert?

Ja ich habs jetzt auch entdeckt.
Mir fehlr die Zeile:
>>#pragma comment(lib, "SDL_gfx.lib")

Diese Datei gibt es bei mir aber nicht. Woher kann ich diese LIB-Datei 
beziehen?

von Tom (Gast)


Lesenswert?

Wenn man die Library compiliert, kriegt man nicht nur die DLL, aber auch 
die LIB-Datei.

von SDL_Anfänger (Gast)


Lesenswert?

Was meinst du jetzt damit? Was sollte ich nun tun?

von SDL_Anfänger (Gast)


Lesenswert?

Wie gesagt die DLL und die HEADERDATEI hab ich ja. Mir fehlt nur noch 
die LIB-Datei.

von Tom (Gast)


Lesenswert?

... und für "fremde" DLLs ohne LIB-File:

Open VS command line from Start->Programs->Microsoft Visual 
Studio->Tools
dumpbin /exports mydll.dll
Copy function names after next line:

ordinal hint RVA      name
        1    0 000110FF my_fnc = @ILT+250(_my_fnc)

Create new text file „mydll.def“ from previous output like:
  EXPORTS      my_add

lib /def:mydll.def /OUT:mydll.lib
Insert „mydll.lib“ into your main project

von SDL_Anfänger (Gast)


Lesenswert?

Also sorry Tom aber mit dem kann ich nun wirklich nichts anfangen.

von SDL_Anfänger (Gast)


Lesenswert?

Kann mir jemand die LIB-Datei geben? Bin nun echt ratlos.

von Tom (Gast)


Lesenswert?

1. Sucht unter
Start->Programs->Microsoft Visual Studio->Tools->VS Command Line

2. Schreibt dort (SDL_gfx.dll liegt in c:\SDL_gfx.dll)
dumpdll /exports c:\SDL_gfx.dll

von SDL_Anfänger (Gast)


Lesenswert?

Hallo Tom,

ich kann mit deinen Ausführen überhaupt nichts anfangen. Sorry vielen 
Dank für deine Hilfe.

von STK500-Besitzer (Gast)


Lesenswert?

>ich kann mit deinen Ausführen überhaupt nichts anfangen.

Kennst du das DOS-Fenster?

von SDL_Anfänger (Gast)


Lesenswert?

Natürlich kenne ich das DOS Fenster.

Ich bin jetzt mal in das Verzeichnis wo die DLL liegt reingegangen. 
dumpdll gibt es bei mir nicht.

von SDL_Anfänger (Gast)


Lesenswert?

"dumpdll" gibt es bei mir nicht.

von SDL_Anfänger (Gast)


Lesenswert?

Ich finde das ganze echt mega mega mega kompliziert. Ich hab gedacht die 
SDL bietet von Haus aus schon alles bin nicht mehr so begeistert davon.

Oder gibt es noch einen anderen weg, um nur eine Linie bzw. ein Rechteck 
(nicht ausgefüllt) zu zeichnen?

von eklige Tunke (Gast)


Lesenswert?

Am besten fängst du nochmal an und zwar bei der Installation.
Hierfür ein paar Links:
http://de.wikibooks.org/wiki/SDL
http://de.wikibooks.org/wiki/SDL:_Installation

von SDL_Anfänger (Gast)


Lesenswert?

Danke für die Tips. Die Seiten kenne ich schon.

von Jean P. (fubu1000)


Lesenswert?

Hi,
wenn du keine Superduper Grafiklibrary brauchst, wieso benutzt du dann 
nicht die Visual Studio interne ?
Schau dir mal die Klasse Grahics an, da gibt es Drawline und so weiter 
schon.
Gruß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Eine solche Klasse oder "interne Graphiklibrary" existiert nur für 
Nutzer des .Net-Geraffels, nicht aber für C- oder C++-Anwender. Nein, 
"Managed C++" ist nicht C++.

Die Alternative wäre die Verwendung der nicht mit den Express-Editionen 
ausgelieferte MFC, aber die ist nicht ganz zu unrecht übel beleumundet.

Das Problem scheint hier an viel fundamentalerer Stelle zu sitzen; hier 
fehlen grundlegende Kenntnisse, wie mit einem Compiler und insbesondere 
mit Libraries und Headerdateien umzugehen ist.

von Karl H. (kbuchegg)


Lesenswert?

Tom schrieb:
> 1. Sucht unter
> Start->Programs->Microsoft Visual Studio->Tools->VS Command Line

Ich schwöre:
Ich benutze VC jetzt schon seit beinah 20 Jahren.
ABer ich habe den Command Prompt im Startmenü bei den VC Tools noch nie 
gesehen :-)
Gerade nachgeshen: tatsächlich, den gibts ja wirklich!

>
> 2. Schreibt dort (SDL_gfx.dll liegt in c:\SDL_gfx.dll)
> dumpdll /exports c:\SDL_gfx.dll


@SDL_Anfänger
Ich gebe zu die Beschreibung ist etwas minimalistisch. Allerdings so 
schwer dann auch wieder nicht zu verstehen.

Start   Das ist der Button links unten im Eck, den du zb dann brauchst
        wenn du ein Programm starten willst oder auch den Rechner
        nieder fahren willst
        (Zitat aus den Anfanfszeiten von Windows - where do you want to
         go today: Start. das ist doch der Button den ich drücken
         muss, wenn ich Windows stoppen will)

Programs->Microsoft Visual Studio->Tools->VS Command Line
die restliche Beschreibung ist der 'Pfad', den du Ausgehend von Start 
Button in den einzelnen aufpappenden Menüs durchgehen musst. Kleb dabei 
nicht allzusehr an den Worten.
"Programs" ist von einem englischen Windows. Dann kann bei dir auf einem 
deutschen Windows "Programme" heißen. "Microsoft Visual Studio" kann bei 
dir auch leicht anders heißen, je nachdem welche Version du hast. Ob das 
Untermenü dann "Tools" heißt oder "Visual Studio Tools" sollte dich auch 
nicht tangieren. Wichtig ist, dass du die entsprechende Funktionalität 
bei dir wiederfindest, auch wenn sie leicht anders heißt.
Und ob das jetzt Command Line oder Command Prompt heißt: Sind nur 2 
unterschiedliche Bezeichnungen für das selbe: Ein Konsolenfenster, in 
dem die Umgebungsvariablen so gesetzt sind, dass man die Visual Studio 
Werkzeuge benutzten kann.

So, jetzt hast du deine Konsole. (schwarzes Fenster mit einem blinkenden 
weißen Eingabecursor.

Jetz musst du wissen, in welchem Pfad du die DLL geparkt hast.
Und in die Konsole gibst du ein

dumpdll /exports c:\Pfad\SDL_gfx.dll

Anstelle von Pfad beutzt du natürlich den Pfad, auf dem du die DLL hast.
Dann sollte sich im Konsolenfenster etwas tun und dumpdll erzeugt dir 
das LIB File.

Wenn du Software Entwickeln willst, dann wirst du nicht umhin kommen, 
auch mal mit ein wenig Phantasie an das Gelesene ranzugehen und 
Beschreinbungen an die auf deinem Rechner vorhandene Situation 
anzupassen.
Schritt-für-Schritt Anweisungen, die man nur stupide runterarbeiten muss 
um ohne Nachdenken oder Ansehen der tatsächlichen Situation zum Ergebnis 
zu kommen, findest du in der IT nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.