【发布时间】:2016-05-04 20:53:35
【问题描述】:
我已经在我的 Mac 上安装了最新版本的 sphinxbase 和 pocketsphinx。在这个 CMU 的site 他们提供了一个简单的 hello world 代码来测试安装的有效性。代码如下:
#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;
}
我必须在下面输入这个命令才能使用 GCC 进行编译
gcc -o hello_ps hello_ps.c \
-DMODELDIR=\"`pkg-config --variable=modeldir pocketsphinx`\" \
`pkg-config --cflags --libs pocketsphinx sphinxbase`
其中 pkg-config 会处理包含和库路径。
但编译会在 stdio.h 文件中返回以下错误(pocketsphinx.h 包含 stdio.h)。
Restrict requires a pointer or reference (int is invalid)
在几个地方还有
Unknown typename _FILE (Expanded from macro 'FILE')
我浏览了 stdio.h 文件并找到了这些相应的语句,但我不知道它是做什么的。我知道 restrict 关键字不是 C++ 标准的一部分,但即使使用 c99 进行编译,它仍然会引发相同的错误。任何帮助将不胜感激。
【问题讨论】:
-
我认为你的编译器坏了,你可以尝试用 FILE 和 stdio.h 编译简单的程序,看看它是否有效。
-
它与一个简单的文件读取程序一起工作。
-
我还尝试使用其他编译器,如 Clang,但又遇到了同样的错误。
-
好的,请将
--verbose标志添加到gcc并提供准确的编译器输出 -
有很多相同的重复错误,所以我将它保存在一个文本文件中并发布在 Google 驱动器中。我让它公开可见,所以请随意访问它。谢谢你。链接为:drive.google.com/open?id=0ByC-Z20h_ChaVnJBUVhrbFRWVlk
标签: macos pocketsphinx