Grafik mit GD library

Nemesis

Nemesis

N3RD
Hi,
ich möchte funktionen grafisch darstellen und habe dazu die gd-library gefunden.
dei pakete libgd2-xpm und ligd2-noxpm sind auch installiert, aber mono mekkert immernoch, dass die funktionen nicht gefunden weren.

muss noch mehr installiert werden ?

danke !
 
Mhh, leicht verklickt? Mono Fragen gehoeren doch eigentlich eher ins Mono Forum, nicht ins C/C++ Forum...
Im Allgemeinen musst du natuerlich gucken dass alle Libs vernuenftig eingebunden sind, worueber du aber kein Wort verloren hast.

mfg,
bytepool
 
hm, ich dachte das ist eine c++-betreffende frage ... die libs habe ich wie folgt eingebunden:
Code:
#include <stdio.h>
#include <gd.h>

oder gibts noch ne andere möglichkeit, was zu zeichnen ? also es geht darum mathematische funktionen auszugeben.
 
Zuletzt bearbeitet:
hm, ich dachte das ist eine c++-betreffende frage ...
dei pakete libgd2-xpm und ligd2-noxpm sind auch installiert, aber mono mekkert immernoch, dass die funktionen nicht gefunden weren.
Und seit wann hat Mono etwas mit C++ zu tun?

Wenn es tatsaechlich C++ ist, waere noch die Frage wie gelinkt und kompiliert wird.
Edit: Und genaue Fehlermeldungen wirken manchmal auch wunder.

mfg,
bytepool
 
also gut ...

Code:
#include <stdio.h>
#include <gd.h>


int main(void)
{
	int xmax, ymax;
	int xmin, ymin;
	
	/*image initialisieren*/
	gdImagePtr image;
	FILE *png;
	int black, white, red, blue, yelow;
	/*Wir erzeugen ein Image mit 401x401 Pixel*/
	image=gdImageCreate(401,401);

	/*Speicher für die Farben allozieren*/
	white=gdImageColorAllocate(image,0,0,0);   /*Weiss*/
	black=gdImageColorAllocate(image,255,255,255); /*Schwarz*/
	red  =gdImageColorAllocate(image,255,0,0); /*rot*/
	blue =gdImageColorAllocate(image,0,0,255); /*blau*/
	yelow=gdImageColorAllocate(image,255,255,0); /*gelb*/

	gdImageRectangle(image,0,0,99,99,black);
   	gdImageRectangle(image,1,1,49,49,yelow);
   	gdImageFill(image,25,25,red);
   	gdImageRectangle(image,50,1,98,49,yelow);
   	gdImageFill(image,75,25, blue);
   	gdImageRectangle(image,1,50,49,98,yelow);
   	gdImageFill(image, 25,75,blue);
   	gdImageRectangle(image,50,50,98,98,yelow);
   	gdImageFill(image, 75,75,red);

   	png = fopen("bild1.png", "wb");

   	gdImagePng(image,png);

   	fclose(png);

  	gdImageDestroy(image);

return 0;
}

die fehler:
Code:
g++ -o "~/FunktionBerechnen/bin/Debug/FunktionBerechnen" "~/FunktionBerechnen/FunktionBerechnen/bin/Debug/FunktionBerechnen.o"  
~/FunktionBerechnen/FunktionBerechnen/bin/Debug/FunktionBerechnen.o: In function `main':
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:15: undefined reference to `gdImageCreate'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:18: undefined reference to `gdImageColorAllocate'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:19: undefined reference to `gdImageColorAllocate'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:20: undefined reference to `gdImageColorAllocate'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:21: undefined reference to `gdImageColorAllocate'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:22: undefined reference to `gdImageColorAllocate'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:24: undefined reference to `gdImageRectangle'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:25: undefined reference to `gdImageRectangle'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:26: undefined reference to `gdImageFill'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:27: undefined reference to `gdImageRectangle'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:28: undefined reference to `gdImageFill'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:29: undefined reference to `gdImageRectangle'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:30: undefined reference to `gdImageFill'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:31: undefined reference to `gdImageRectangle'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:32: undefined reference to `gdImageFill'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:36: undefined reference to `gdImagePng'
~/FunktionBerechnen/FunktionBerechnen/FunktionBerechnen.cpp:40: undefined reference to `gdImageDestroy'
collect2: ld returned 1 exit status
Erstellung abgeschlossen -- 17 Fehler, 0 Warnungen

Und seit wann hat Mono etwas mit C++ zu tun?
siehe Datei -> Neu -> Neue Datei -> CPP -> General -> Empty C++ Source File
 
dei pakete libgd2-xpm und ligd2-noxpm sind auch installiert
[...]
muss noch mehr installiert werden ?
Jo, die Header Dateien befinden sich wie immer in libgd2-xpm-dev. Die xpm und noxpm Pakete sind bei mir allerdings auch Konflikte. ;)

Und dann muss natuerlich noch gegen die Lib gelinkt werden:
Code:
g++ -o gdlibt gdlibt.cpp -lgd
mfg,
bytepool
 
Kurze Frage von einem "Programmier"-DAU:

Code:
#include <stdio.h>
Ist das nicht eigentlich eher "the C-way" einen Header einzubinden?

Also ich kenne diese Art der Einbindung (meist, wenn man ältere Programme für den erfolgreichen Paketbau mit gcc>=4.3 patchen muss und dort einen/mehrere Header explizit hinzufügen muss, die seit dieser Version nicht mehr automatisch includiert werden) und weiß, daß das auch unter C++ funktioniert, aber sollte das in dem Fall für C++ nicht eher das hier sein?

Code:
#include <cstdio>
Zumindest kenne ich das von den meisten C++-Programmen bei denen ich per Patch "Hand anlegen" musste.
 
Zuletzt bearbeitet von einem Moderator:
Code:
#include <stdio.h>
Ist das nicht eigentlich eher "the C-way" einen Header einzubinden?
Stimmt genau. Aber der hier praesentierte Code ist eh reines C soweit, und auch libgd2 scheint eine reine C Lib zu sein. Ich bin auch nicht so der Experte in C oder C++, ich merke mir meistens auch nur dass in C das .h dranbleibt und in C++ nicht. Doch da C bis C99 eh eine Untermenge von C++ war, duerfte es in der Praxis gar nicht so relevant sein. Der falsche Header fuehrt meines Wissens nur zu einer deprecation warning, funktioniert aber trotzdem.

Aber im Allgemeinen ist es schon gut wenn man sich darueber im klaren ist, welche Sprache man denn eigentlich benutzt, schon allein aus Stilgruenden. Manche Leute schmeissen C und C++ ja vollkommen skrupellos durcheinander dass es einem nur kalt den Ruecken runter laeuft. ;)

mfg,
bytepool
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

PATH wird nicht richtig durchsucht

Squid3 als Reverse Proxy

HowTo? : CentOS Kickstart / angepasste Installation mit mehren Installationspfaden

Gnome Classic Desktop: Home-Inhalt Icons ausblenden

Zurück
Oben