У меня есть оболочка для многих программ чтения с экрана и речевых систем на Mac, Windows и Linux, и остался только один — Mac. Я следовал примерам, найденным на сайте разработчика Apple для менеджера синтеза речи, но не могу понять, какая у меня ошибка. Ошибка происходит, когда я запускаю строку кода
OSErr val = NewSpeechChannel(NULL, chan);
Однако это возвращает ошибку -50, ошибку параметра. Я не смог найти никакой информации относительно этого и менеджера синтеза речи, и почти не нашел никакой информации об этом, кроме как в помощи для самих программ, вместо sdk. Я также посмотрел справочник менеджера синтеза речи под кодами ошибок, и его даже не было в списке. Я даже спрашивал на форумах разработчиков Apple, хотя речевой подфорум кажется довольно мертвым.
Итак, что может вызвать ошибку -50 (ошибка параметра) и как ее можно исправить.
-Майкл.
Постскриптум Мой код может быть найден в следующем проекте github, в screen-reader / screen_reader.cpp, однако я уверен, что единственными функциями Mac, которые я вызывал в данный момент, является NewSpeechChannel, который выдает ошибку -50.
http://github.com/2mb-solutions/horseshoes
Возможно, вы не выделяете структуру SpeechChannel, которая должна быть предварительно выделена, вместо этого вы используете NULL, что приводит к повреждению памяти.
Так должно быть
SpeechChannel speechChannel;
OSErr val = NewSpeechChannel(NULL, &chan);
или же
SpeechChannel *speechChannel = malloc(sizeof(SpeechChannel)); // Not NULL
OSErr val = NewSpeechChannel(NULL, chan);
Вы можете найти пример Вот
Других решений пока нет …