2015-12-07 12 views
0

我在mac,windows和linux上有许多屏幕阅读器和语音系统的包装,唯一剩下要工作的就是mac。我遵循苹果开发者网站上为语音合成管理器找到的例子,但我无法弄清楚我遇到的错误。当我运行代码行时发生错误mac语音合成管理器在创建语音通道时返回参数错误

OSErr val = NewSpeechChannel(NULL, chan); 

但是,这会返回错误-50,参数错误。我一直无法找到关于它和语音合成管理器的任何信息,除了帮助程序本身而不是sdk之外,几乎没有找到关于它的任何信息。我还查看了错误代码下的语音合成管理器参考资料,甚至没有列出。我甚至在苹果开发者论坛上提出过问题,虽然演讲分论坛似乎已经死了。

那么,什么可能会导致错误-50(参数错误),以及如何修复。

-Michael。

P.S.我的代码可以在下面的github项目中的screen-reader/screen_reader.cpp下找到,但是我确定我刚才调用的唯一的mac函数是NewSpeechChannel,它引发错误-50。 http://github.com/2mb-solutions/horseshoes

+1

我怀疑这应与VoiceOver后,Mac的辅助工具进行标记。 – ChrisCM

回答

1

可能您没有分配必须预先分配的SpeechChannel结构,您可以使用NULL来代替并导致内存损坏。

应该

SpeechChannel speechChannel; 
OSErr val = NewSpeechChannel(NULL, &chan); 

SpeechChannel *speechChannel = malloc(sizeof(SpeechChannel)); // Not NULL 
OSErr val = NewSpeechChannel(NULL, chan); 

你可以找到例子here