Anzeige:
Ergebnis 1 bis 2 von 2

Thema: libjpeg macht mich wahnsinnig

  1. #1
    Registrierter Benutzer
    Registriert seit
    16.09.2002
    Beiträge
    73

    Angry libjpeg macht mich wahnsinnig

    Hallo alle zusammen,

    ich habe hier ein kleines Programm geschrieben, welches fltk benutzt. Das funktioniert auch ganz prima. Nun wollte ich die Möglichkeit einbauen jpeg-Bilder zu schreiben. Die Klassen, die fltk anbietet können aber jpeg nur lesen. Also habe ich mir gedacht, einfach die libjpeg einzubauen. Dazu habe ich aus einem Beispiel einfach den Code kopiert:
    Code:
    #include <jpeglib.h>
    
    GLOBAL(void)
    write_JPEG_file (char * filename, int quality, JSAMPLE * image_buffer, int image_width, int image_height){
    	//snip: code from jpeglib/example.c
    	struct jpeg_compress_struct cinfo;
    	struct jpeg_error_mgr jerr;
    	FILE * outfile;			/* target file */
    	JSAMPROW row_pointer[1];/* pointer to JSAMPLE row[s] */
    	int row_stride;			/* physical row width in image buffer */
    	cinfo.err = jpeg_std_error(&jerr);
    	jpeg_create_compress(&cinfo);
    	if ((outfile = fopen(filename, "wb")) == NULL) {
    		fprintf(stderr, "can't open %s\n", filename);
    		jpeg_destroy_compress(&cinfo);
    		return;
    		}
    	jpeg_stdio_dest(&cinfo, outfile);
    	cinfo.image_width = image_width; 	/* image width and height, in pixels */
    	cinfo.image_height = image_height;
    	cinfo.input_components = 3;		/* # of color components per pixel */
    	cinfo.in_color_space = JCS_RGB; 	/* colorspace of input image */
    	jpeg_set_defaults(&cinfo);
    	jpeg_set_quality(&cinfo, 90, true /* limit to baseline-JPEG values */);
    	jpeg_start_compress(&cinfo, true);
    	row_stride = image_width * 3;	/* JSAMPLEs per row in image_buffer */
    	while (cinfo.next_scanline < cinfo.image_height) {
    		row_pointer[0] = & image_buffer[cinfo.next_scanline * row_stride];
    		(void) jpeg_write_scanlines(&cinfo, row_pointer, 1);
    		}
    	jpeg_finish_compress(&cinfo);
    	fclose(outfile);
    	jpeg_destroy_compress(&cinfo);
    	//snap
    	}
    Das compiliert auch ganz prima. Beim Linken habe ich dann aber massenweise undefinierte Referenzen ala:
    undefined reference to `jpeg_std_error(jpeg_error_mgr*)'

    ...und das obwohl ich mit g++ -ljpeg ... linke.
    Hat jemand von euch schonmal so ein Problem gehabt und eine mögliche Lösung dafür???

  2. #2
    Registrierter Benutzer
    Registriert seit
    16.09.2002
    Beiträge
    73

    Thumbs up

    Falls jemand von euch mal auf ein ähnliches Problem stossen sollte: Heureka ich habs!

    einfach mit:
    Code:
    extern "C"{
    #include <jpeglib.h>
    }
    den Header einbinden und schon gehts.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •