调试 sapi5 文本到语音引擎

Debug sapi5 text to speech engine

我目前正在开发 TTS 引擎,我的工作是使其与 Microsoft SAPI5 兼容。我按照教程 here 长时间使用 SAPI 示例项目并成功构建了引擎 dll。我用 regsvr32 注册了 dll,并将语音附加到注册表中。然而,当一个应用程序(在我的例子中是 NVDA 屏幕 reader)调用我的引擎时,我得到了错误(来自 NVDA 日志)

COMError: (-2147221164, 'Class not registered', (None, None, None, 0, None))

我显然在引擎上做错了,但我不知道如何调试它。

你必须调试 NVDA,而不是引擎。您需要弄清楚它尝试访问哪个 class。弄清楚这一点后,您需要检查为什么没有在 COM 注册表中正确注册您的引擎。

有关详细信息,请参阅

Error 80040154 (Class not registered exception) when initializing VCProjectEngineObject (Microsoft.VisualStudio.VCProjectEngine.dll)

根据 SAPI 示例,在 idl 文件中声明了一个库(带有 libid)和我的引擎 class(带有 clsid),然后有一个 .rgs 文件,该文件依次将引擎注册到注册表中,在我的问题中,我确实将 clsid 与 libid 放错了位置,因此引擎未正确注册。