Fehlermeldung - voidpointer
-
Hallo zusammen,
und zwar krieg ich die folgende Fehlermeldung mit der ich nichts anfangen kann:
argument of type "void ()()" is incompatible with parameter of type "void
Der Prototyp der Funktion sieht wie folgt aus:
I32 BayerToYCbCr (image *bayer, image *ycbcr)
wobei image eine Struktur ist.
Vielen Dank!
-
Fehlermeldung:
argument of type "void ()()" is incompatible with parameter of type "void ()() C"(oben etwas abgeschnitten)
-
Poste bitte den richtigen Code damit wir die Fehlermeldung auch nachvollziehen können.
Da ist nirgendwo ein Funktionszeiger, ergo kann der Fehler dort auch nicht auftreten.Und die Fehlermeldung sieht auch komisch aus, sicher dass die so richtig ist ?
-
Ja leider schon
image area, ycbcr; //Image is a struct int err; U8 *image_jpg; U8 *addr; U8 * addr_U8 = (U8*)sysmalloc(400000,MDATA); if(addr_U8 == NULL) print("Memory U8 allocation failed\n"); else print("Memory U8 allocated \n"); /* working page = physical page */ ScrSetLogPage(ScrGetPhysPage); ImageAssign(&area,ScrByteAddr(0,0), ScrGetColumns, ScrGetRows, ScrGetPitch); //COLOR IMAGE// ImageAllocate(&ycbcr, IMAGE_CBCR444, 640, 480); ycbcr.pitch=ScrGetPitch; vmode(vmLive); // set video mode (live video + cyclic image acquisition) print("Get image and calculate the sum of it. Press any key\n"); rs232rcv(); /* wait for any key */ tpict(); // take picture, stored in area area.type=BAYER; //setting Bayer pattern print("Type of image: %i \n",area.type); print("Memory req.: %i \n",(area.dy*area.pitch)); BayerToYCbCr(&area, &ycbcr); // ...
-
Ich habe das Gefühl das es etwas damit zutun hat das die Lib für C geproggt wurde (eigentlich auch für C++ zugelassen) aber ich sie im C++ verwende.
Sowas in der Art:
http://stackoverflow.com/questions/24062583/extern-c-null-function-pointerJemand eine Idee?
Gruß
-
OK hab folgendes in der lib gefunden:
(In der Doku stehts nicht drin das es ein #define ist )
void StoreYCBCR (U8 *Red, U8 *Green, U8 *Blue, I32 Line, I32 dx, image *YCBCR); //.. #define BayerToYCbCr(bayer, ycbcr) BayerToRGB_5x5(bayer, ycbcr, NULL, (void *(*)())StoreYCBCR)
Gruß
-
trick123 schrieb:
Ich habe das Gefühl das es etwas damit zutun hat das die Lib für C geproggt wurde (eigentlich auch für C++ zugelassen) aber ich sie im C++ verwende.
Halte ich führ unwahrscheinlich.
trick123 schrieb:
void StoreYCBCR (U8 *Red, U8 *Green, U8 *Blue, I32 Line, I32 dx, image *YCBCR); //.. #define BayerToYCbCr(bayer, ycbcr) BayerToRGB_5x5(bayer, ycbcr, NULL, (void *(*)())StoreYCBCR)
Der Cast ist mir auch sehr suspekt...
Und die Fehlermeldung auch...
Gib mal die Signatur von "BayerToRGB_5x5".
-
I32 BayerToRGB_5x5(image *bayer, image *rgb, image *ovl, void *(*function)());
So sieht die Funktion aus.
Habe es nun folgendermaßen gemacht:
extern "C" { typedef void * (*store)(void); } //... BayerToRGB_5x5(&area, &ycbcr, NULL, (store)StoreYCBCR);
So nun kriege ich beim kompilieren keinen Fehler mehr aber zur Runtime
Gruß
-
[quote="DarkShadow44[/quote]Halte ich führ unwahrscheinlich.
quote]
Letzer Absatz:
http://docs.oracle.com/cd/E19059-01/wrkshp50/805-4956/bajdcjch/index.html
-
trick123 schrieb:
extern "C" { typedef void * (*store)(void); } //... BayerToRGB_5x5(&area, &ycbcr, NULL, (store)StoreYCBCR);
So nun kriege ich beim kompilieren keinen Fehler mehr aber zur Runtime
Hm, scheint man wohl tatsächlich so zu machen, hab ich ja noch nie gehört dass extern "C" auch Zeiger betrifft.
Und was für Fehler treten zur Laufzeit auf ?
-
Hi,
“Undefinde external symbol !!!”
“fatal error, can’t load program – fd:Streaming.exe”Der Feher sieht so aus. Muss dazu sagen das es eine Software für eine Kamera ist.
Gruß