dsPIC, FFT, " undefined reference to `_FFTComplexIP'"

Gast #3531258
hallo leute,

ich bin dabei die fft von microchip aus zu probieren
habe mir dazu das beispiel CE018 angesehen.
http://embeddedcodesource.com/developer/microchip_technology_59/ce018__using_the_fast_fourier_transform_fft_for_frequency_detection

wenn ich dieses beispiel einfach so überneme und nur den wert von 
FFT_BLOCK_LENGHT verkleinere sagt der compiler mir:

build/default/production/main.o(.text+0x10): In function `.LSM1':
: undefined reference to `_FFTComplexIP'
make[2]: *** [dist/default/production/CE018.X.production.hex] Error 255
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

das selbe sagt der mir auch in meinem eigenen code.

ich benutze den xc16-compiler, den dsPIC30F3010 und habe xc.h und dsp.h 
eingebunden

vielen dank für eure hilfe
#3531263
voynich schrieb:

> FFT_BLOCK_LENGHT verkleinere sagt der compiler mir:

Das sagt nicht der COmpiler, sondern der Linker

>
> build/default/production/main.o(.text+0x10): In function `.LSM1':
> : undefined reference to `_FFTComplexIP'


Der Linker ist dafür zuständig, aus den diversen einzeln compilierten 
C-Dateien und diversen Bibliotheken, das endgültige Programm 
zusammenzubauen.

undefined reference bedeutet:
Das Objekt (die Funktion) wird zwar verwendet (bei einer Funktion 
aufgerufen), aber ich kann die IMplementierung in den Bausteinen, die du 
mir gegeben hast nicht finden.

Also: schau nach, wo die Implementierung der Funktion _FFTComplexIP ist 
und warum sie nicht in den Build-Prozess mit einfliesst.
Gast #3531358
danke für die antwort aber soweit habe ich auch schon gedacht

die funktion welche ich verwende ist in dsp.h definiert daran kanns eig 
nicht liegen.

in dsp.h steht:
extern fractcomplex* FFTComplexIP (...);

hab mal gelesen das man noch extra die bib libq-dsp-coff.a und/oder 
libdsp-coff.a einbinden muss. Wie geht das? Was hat es damit auf sich?
#3531385
voynich schrieb:

> die funktion welche ich verwende ist in dsp.h definiert daran kanns eig
> nicht liegen.

Die Funktion ist nicht in dsp.h 'definiert'.
Die ist dort deklariert.

D.h. in dsp.h steht ....
>
> in dsp.h steht:
> extern fractcomplex* FFTComplexIP (...);

... dass es diese Funktion gibt. Irgendwo.
Aber nur weil jemand behauptet, dass es etwas irgendwo gäbe, bedeutet 
das noch lange nicht, dass es diese Funktion dann auch tatsächlich gibt 
oder dass der Linker eigenmächtig die Festplatte danach absuchen würde.


> hab mal gelesen das man noch extra die bib libq-dsp-coff.a und/oder
> libdsp-coff.a einbinden muss. Wie geht das? Was hat es damit auf sich?

Das klingt ja mal nicht so schlecht.
Ich hab nämlich auch auf der Microchip Website ein wenig gelesen. Die 
'Funktion' steckt in irgend einer Library (ich vermute mal die im 
linkerscript angegebene -ldsp), denn die eigentliche Funktionalität wird 
in Hardware erledigt. Die Funktion FFTComplexIP ist also nur ein 
Vermittler, der der Hardware die Daten zum Verwurschten vorwirft.
Also: Mit welchen Librarys linkst du?
Gast #3532293
juhu ...vielen dank habs jetz hinbekommen.

also normalerweise nimmt die ide dann nur das standard linkerskript aber 
um die anderen bibliotheken mit einzu binden muss ich das skript vom 
projekt nemen welches dann auch wieder das standard skript einbindet?

wie das genauer funktionier steht warscheinlich im "MPLAB XC16 ASSEMBLER 
LINKER AND UTILITIES Users Guide" von microchip oder?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.