2015-12-07 30 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