1
votes

I'm currently working on a TTS engine and my job is to make it compatible with Microsoft SAPI5. I followed the tutorial here a long with the SAPI sample projects and successfully built the engine dll. I registered the dll with regsvr32 and attached the voice into registry. However when an application (NVDA screen reader in my case) called my engine, I got the error (from NVDA log)

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

I obviously have done something wrong with the engine but I have no idea how I might debug this.

2
Does your TTS engine work when called from another app (e.g., the TTSApp sample)? That's a much simpler app to start with. - Eric Brown
I did try but no luck. It's the same error, class not registered. The thing is when I registered using regsvr32, it said "successfully". I'm totally lost here - AtheS21

2 Answers

0
votes

You have to debug NVDA, not engine. You need to figure out which class does it try to access. Once you figure that out you need to check why you didn't properly register your engine in COM registry.

For more details see

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

0
votes

According to SAPI sample, in the idl file declared a library (with libid) and my engine class (with clsid), then there is a .rgs file which in turn will register the engine into registry, in my problem I did misplace the clsid with the libid, hence the engine is not registered properly.