我已经在我的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 进行编译,它仍会引发相同的错误。任何帮助将受到高度赞赏。
答案 0 :(得分:0)
根据日志,您有一个额外的文件let GET_LISTING = "Listing/GetDetails?deviceid=%@&listingid=%@"
let url = SERVER_URL + String.localizedStringWithFormat(GET_LISTING, deviceId, String(listingId))
,它不是标准的包含文件。此文件是由其他一些软件安装的,会导致问题。
您需要从系统中删除有问题的stdio.h(可能还有其他额外的标题)。
正确的stdio.h位于/usr/local/include/stdio.h
。