В настоящее время я работаю над механизмом TTS, и моя задача — сделать его совместимым с Microsoft SAPI5. Я следовал за учебником Вот Долго с примерами проектов SAPI и успешно построен двигатель DLL. Я зарегистрировал dll с regsvr32 и приложил голос в реестр. Однако, когда приложение (программа чтения с экрана NVDA в моем случае) вызывало мой движок, я получал ошибку (из журнала NVDA)
COMError: (-2147221164, 'Class not registered', (None, None, None, 0, None))
Я, очевидно, сделал что-то не так с двигателем, но я понятия не имею, как я могу отладить это.
Вы должны отлаживать NVDA, а не двигатель. Вы должны выяснить, к какому классу он пытается получить доступ. Как только вы поймете это, вам нужно проверить, почему вы не правильно зарегистрировали свой движок в реестре COM.
Для более подробной информации смотрите
Согласно примеру SAPI, в файле idl объявлена библиотека (с libid) и мой класс движка (с clsid), затем есть файл .rgs, который, в свою очередь, зарегистрирует движок в реестре, в моей проблеме я неправильно разместил clsid с libid, следовательно, двигатель не зарегистрирован должным образом.