forloRn_
Legacy Member
Goedenavond,
Een vriend van me heeft gevraagd om met behulp van Qt een deftige GUI rond zijn C-applicatie te bouwen. Het gaat hier om een programma dat in staat is om een Anadigm-chip te herconfigureren, maar dat is naast de kwestie.
De C-applicatie compileert en werkt zonder problemen. Het hoofdprogramma (alles zit in main()) heeft hij zelf geschreven, de rest van de bestanden (ApiCode.h, ApiCode.c, CAMCode.h, CAMCode.c) zijn gegenereerd door een tool van Anadigm zelf.
Ik ging ervan uit dat ik de Anadigm-bestanden mocht behouden, en enkel het hoofdprogramma moest herschrijven met behulp van Qt. Zo gezegd, zo gedaan. Compileren doe ik via de console met qmake -project, qmake en make. Hierbij geeft de compiler de volgende warnings:
Die variabelen zijn overal extern gedeclareerd: ik kan nergens een gewone declaratie vinden. Waarom vindt de C-compiler dat okee, en de C++-compiler niet?
Goed, het programma is met succes gecompileerd. Het draait perfect, tot ik op de knop "Genereer stream" druk; dan crasht het met een segmentation fault. Ervaring heeft me geleerd dat zoiets weleens voorkomt als je variabelen probeert aan te spreken waarvoor geen geheugen gereserveerd is. Is er enig verband met die warnings hierboven?
De schuldige lijnen in anadigmform.cpp zijn in ieder geval de volgende:
Kort gezegd: ik heb me er suf op gezocht, maar ik weet niet waarom het programma crasht. Heeft er iemand een idee? En mag ik C en Qt (C++) zomaar mixen?
De bestanden vind je hier.
Een vriend van me heeft gevraagd om met behulp van Qt een deftige GUI rond zijn C-applicatie te bouwen. Het gaat hier om een programma dat in staat is om een Anadigm-chip te herconfigureren, maar dat is naast de kwestie.
De C-applicatie compileert en werkt zonder problemen. Het hoofdprogramma (alles zit in main()) heeft hij zelf geschreven, de rest van de bestanden (ApiCode.h, ApiCode.c, CAMCode.h, CAMCode.c) zijn gegenereerd door een tool van Anadigm zelf.
Ik ging ervan uit dat ik de Anadigm-bestanden mocht behouden, en enkel het hoofdprogramma moest herschrijven met behulp van Qt. Zo gezegd, zo gedaan. Compileren doe ik via de console met qmake -project, qmake en make. Hierbij geeft de compiler de volgende warnings:
Code:
ApiCode.c:207: warning: ‘an_FPAA1_InputCell1_IOCell’ initialized and declared ‘extern’
ApiCode.c:218: warning: ‘an_FPAA1_InputCell2_IOCell’ initialized and declared ‘extern’
ApiCode.c:229: warning: ‘an_FPAA1_InputCell3_IOCell’ initialized and declared ‘extern’
ApiCode.c:240: warning: ‘an_FPAA1_InputCell4_IOCell’ initialized and declared ‘extern’
ApiCode.c:251: warning: ‘an_FPAA1_OutputCell1_IOCell’ initialized and declared ‘extern’
ApiCode.c:262: warning: ‘an_FPAA1_OutputCell2_IOCell’ initialized and declared ‘extern’
ApiCode.c:273: warning: ‘an_FPAA1_filt0_0_Capacitor’ initialized and declared ‘extern’
ApiCode.c:286: warning: ‘an_FPAA1_filt1_0_Capacitor’ initialized and declared ‘extern’
ApiCode.c:299: warning: ‘an_FPAA1_filt2_1_Capacitor’ initialized and declared ‘extern’
ApiCode.c:312: warning: ‘an_FPAA1_filt3_1_Capacitor’ initialized and declared ‘extern’
Die variabelen zijn overal extern gedeclareerd: ik kan nergens een gewone declaratie vinden. Waarom vindt de C-compiler dat okee, en de C++-compiler niet?
Goed, het programma is met succes gecompileerd. Het draait perfect, tot ik op de knop "Genereer stream" druk; dan crasht het met een segmentation fault. Ervaring heeft me geleerd dat zoiets weleens voorkomt als je variabelen probeert aan te spreken waarvoor geen geheugen gereserveerd is. Is er enig verband met die warnings hierboven?
De schuldige lijnen in anadigmform.cpp zijn in ieder geval de volgende:
Code:
an_SetBQLowPassFilterI(6, 0.200, 1, 1.30651);
an_SetBQLowPassFilterI(7, 0.200, 1, 1.30651);
Kort gezegd: ik heb me er suf op gezocht, maar ik weet niet waarom het programma crasht. Heeft er iemand een idee? En mag ik C en Qt (C++) zomaar mixen?
De bestanden vind je hier.





