2016-06-21 26 views
2

Ich mache Wavelet in C und fand glücklicherweise GSL-2.1. Ich versuche, GSL-2.1-Schnittstelle für ARM Cortex-M-Prozessoren in Code Composer Studio sowie Energia 15.-Code ist sehr einfachGNU Scientific Library Compilierungsfehler für ARM Cortex M Procssor

#include <stdio.h> 
#include <math.h> 
#include <gsl/gsl_errno.h> 
#include <gsl/gsl_vector.h> 
#include <gsl/gsl_blas.h> 
#include <gsl/gsl_test.h> 
#include <gsl/gsl_wavelet.h> 
#include <gsl/gsl_wavelet2d.h> 


int i, n=256, nc=20; 
double data[256]; 
double abscoeff[256]; 
gsl_wavelet *w; 
gsl_wavelet_workspace *work; 

int main(){ 
w = gsl_wavelet_alloc (gsl_wavelet_daubechies, 4); 
work = gsl_wavelet_workspace_alloc(256); 

} 

Auch für diesen Code, Compiler in Energia folgende Fehler geben 15

error: 'w' does not name a type 
error: 'work' does not name a type 

und Code Composer Studio zeigt folgende Fehler

undefined     first referenced 
symbol       in file  
---------     ---------------- 
gsl_wavelet_alloc   ./main.obj  
gsl_wavelet_daubechies  ./main.obj  
gsl_wavelet_workspace_alloc ./main.obj 

error #10234-D: unresolved symbols remain 

fragte ich es schon here und versuchte, einige Änderungen im Code zu tun. Ich musste fast 5 c-Dateien hinzufügen, um # Fehler zu reduzieren. Jetzt bekomme ich nur ein Fehler

" RETURN_IF_NULL undef symbol first referenced in ./main.obj " 

Auf jeden Fall muß ich ein oder mehr C-Datei hier hinzufügen, aber ich bin verloren. kannst du mir helfen welche Datei muss ich hier hinzufügen? Jede Hilfe würde appiated sein.

+0

'RETURN_IF_NULL' klingt wie ein Makro, d. H. Es gibt ein Header-Problem. – unwind

+0

Danke für Ihre schnelle Antwort. Es ist eine Funktion, die in fast 100 Dateien von GSL-2.1 aufgerufen wird, um den Speicher freizugeben oder um zu überprüfen, ob der Zeiger kein NULL-Zeiger ist. Beispielcode ist unten angegeben RETURN_IF_NULL (p); frei (p-> Bereich); frei (p-> Summe); frei (p); Aber ich konnte die Quelldatei nicht finden. – Stark

+0

Ich fand anderswo eine 'return_if_null' in gsl' config.h' aber ist definiert als: '#define RETURN_IF_NULL (x) if (! X) {return; } ' –

Antwort

1

die documentation Lesen, so scheint es mir, dass es eine fehlende Makro (RETURN_IF_NULL(x) if (!x) { return ; }), dass durch das Werkzeug autoconf erstellt wurden, sollten die Informationen in configure.ac mit und fügte in der config.h Datei, wie in diesem config.h.

Im Quellcode in der Datei configure.ac, gibt es eine Richtlinie:

AH_BOTTOM([#define RETURN_IF_NULL(x) if (!x) { return ; } 
]) 

die autoconf das Makro am Ende der Datei config.h hinzufügen anweist, die, nachdem Sie die ./configure laufen erstellt Skript (getestet auf meinem OSX 10.10, gsl-2.1).

Ich denke, dass etwas während der Konfiguration schief gelaufen ist. Wenn Sie bereits eine Konfigurationsdatei im Verzeichnis include von GSL haben dann können Sie ganz am Ende hinzufügen:

RETURN_IF_NULL(x) if (!x) { return ; } 

Oder man kann es schaffen und dann schließen sie in den Quelldateien.