2

我目前正在开发 TTS 引擎,我的工作是使其与 Microsoft SAPI5 兼容。我使用 SAPI 示例项目长期遵循这里的教程,并成功构建了引擎 dll。我用 regsvr32 注册了 dll 并将语音附加到注册表中。但是,当应用程序(在我的例子中是 NVDA 屏幕阅读器)调用我的引擎时,我收到了错误(来自 NVDA 日志)

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

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

4

2 回答 2

0

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

有关更多详细信息,请参阅

初始化 VCProjectEngineObject (Microsoft.VisualStudio.VCProjectEngine.dll) 时出现错误 80040154(类未注册异常)

于 2017-04-24T07:57:39.817 回答
0

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

于 2017-04-25T17:09:27.313 回答