PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mit libnetpbm ein pgm-bild einlesen



The_Student
25-06-2006, 14:48
Hallo, ich versuche momentan mit folgendem Codestück ein pgm-bild mit Hilfe der libnetpbm einzulesen:


FILE *pic;

gray ** picture;
gray max;
int cols;
int rows;

pic = fopen( <dateiname>, "r");
picture = pgm_readpgm(pic, &cols, &rows, &max);
fclose(pic);


<dateiname> ist ein string der den Namen der einzulesenden Bilddatei enthält.

Um die funktionsaufrufe dereferenzieren zu können linke ich in meinem Makefile folgendermassen:



LIBS = -L/usr/lib/ -lnetpbm -lm
INCLUDES = -I/usr/include

${TARGET}: $(OBJ)
$(CXX) $(LFLAGS) -o ${TARGET} $(OBJ) ${LIBS}


Laut ldd ist das binary auch gegen die mathlib und gegen die netpbm gelinkt (wenn ich die funktionen der netpbm nicht aufrufe compiliert das Programm), aber der compiler beschwert sich, sobald ich versuche mit "pgm_readpgm()" die datei zu lesen:



undefined reference to `pgm_readpgm(_IO_FILE*, int*, int*, unsigned int*)'


Kann mir jemand helfen wie ich mit hilfe der netpbm einfach und komfortabel pgm-bilder auslesen kann? Ich komme hier gerade überhaupt nicht mehr weiter :(

Hier noch ein Link zur Doku, mit der ich arbeite... evtl. hab ich ja was übersehen, was ein richtiger Profi einfach weiss :)

http://netpbm.sourceforge.net/doc/libpgm.html

Yonibear
26-06-2006, 14:41
Könnte es sein dass du C++ verwendest und der Header seine Prototypen nicht mit extern "C" angibt? Ansonsten erzeugt der Compiler für die Funktion einen C++-Namen der auch die Argumente beinhaltet, der aber dann hinterher in der Bibliothek nicht gefunden werden kann.

Edit: Ich hab mal libnetpbm-dev bei mir installiert und nachgeschaut, es fehlt tatsächlich das extern "C". Also beim Header einfach schreiben:


extern "C" {
#include <pbm.h>
}

The_Student
27-06-2006, 00:05
Danke für die Antwort! War bis eben noch mit anderen Aufgaben beschäftigt, kann mich jetzt aber wieder dem Bild Einlesen widmen :)

Auf sowas wäre ich wohl... nie gekommen. Ja, ich verwende C++... sowas... naja, dann werd ich das wohl hoffentlich jetzt gebacken bekommen.

Danke nochmal.

EDIT: also kompilieren tuts schonmal... heute nachmittag/abend weiss ich hoffentlich obs auch funktioniert...