2016-05-04 4 views
0

Ich habe die neueste Version von Sphinxbase und PocketSphinx auf meinem Mac installiert. In den CMUs site haben sie einen einfachen Hallo-Welt-Code zur Verfügung gestellt, um die Gültigkeit der Installation zu testen. Der Code sieht so aus:CMU pocketsphinx auf dem Mac: GCC wirft Fehler in stdio.h

#include <pocketsphinx.h> 

int main(int argc, char *argv[]) 
{ 
    ps_decoder_t *ps = NULL; 
    cmd_ln_t *config = NULL; 

    config = cmd_ln_init(NULL, ps_args(), TRUE, 
      "-hmm", MODELDIR "/en-us/en-us", 
      "-lm", MODELDIR "/en-us/en-us.lm.bin", 
      "-dict", MODELDIR "/en-us/cmudict-en-us.dict", 
      NULL); 

    return 0; 
} 

und ich habe diesen Befehl geben Sie unten

gcc -o hello_ps hello_ps.c \ 
-DMODELDIR=\"`pkg-config --variable=modeldir pocketsphinx`\" \ 
`pkg-config --cflags --libs pocketsphinx sphinxbase` 

mit GCC zu kompilieren, wo pkg-config kümmern würde über umfassen und Bibliothekspfade.

Aber die Kompilierung gibt die folgenden Fehler in der Datei stdio.h zurück (pocketsphinx.h enthält die stdio.h).

Restrict requires a pointer or reference (int is invalid) 

mehrere Orte in und

Unknown typename _FILE (Expanded from macro 'FILE') 

Ich ging auch durch stdio.h Datei und fand diese entsprechenden Aussagen und ich habe keine Ahnung, was es tut. Ich verstehe, dass beschränken Schlüsselwort ist kein Teil von C++ Standard, aber selbst beim Kompilieren mit c99, wirft es immer noch den gleichen Fehler. Jede Hilfe würde sehr geschätzt werden.

+0

Ich denke, Sie Compiler ist kaputt, könnten Sie versuchen, einfache Programm mit FILE und stdio.h kompilieren und sehen, ob es funktioniert. –

+0

Es funktioniert mit einem einfachen Programm zum Lesen von Dateien. – vishnu

+0

Und ich habe es auch mit anderen Compilern wie Clang versucht und die haben wieder die gleichen Fehler bekommen. – vishnu

Antwort

0

Entsprechend dem Protokoll haben Sie eine zusätzliche Datei /usr/local/include/stdio.h, die keine Standard-Include-Datei ist. Diese Datei wurde von einer anderen Software installiert und verursacht Probleme.

Sie müssen problematische stdio.h (und wahrscheinlich andere zusätzliche Header) von Ihrem System entfernen.

Korrekt stdio.h ist in /usr/include folder.

+0

Ja, ich habe nur die unnötigen Dateien von usr/local/include entfernt und es funktioniert jetzt. Ich danke dir sehr !! – vishnu

Verwandte Themen