www.mikrocontroller.net

Forum: PC-Programmierung Linien und Rechteck zeichnen mit SDL


Autor: SDL_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: SDL_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: SDL_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Tom (Gast)
Datum:

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

Autor: SDL_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was meinst du jetzt damit? Was sollte ich nun tun?

Autor: SDL_Anfänger (Gast)
Datum:

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

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SDL_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also sorry Tom aber mit dem kann ich nun wirklich nichts anfangen.

Autor: SDL_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir jemand die LIB-Datei geben? Bin nun echt ratlos.

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SDL_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tom,

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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ich kann mit deinen Ausführen überhaupt nichts anfangen.

Kennst du das DOS-Fenster?

Autor: SDL_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: SDL_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"dumpdll" gibt es bei mir nicht.

Autor: SDL_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: eklige Tunke (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: SDL_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Tips. Die Seiten kenne ich schon.

Autor: Jean Player (fubu1000)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.