gpt4 book ai didi

c++ - Win8 的拼写检查 API 将 null 作为输出参数发送

转载 作者:太空宇宙 更新时间:2023-11-04 13:35:08 26 4
gpt4 key购买 nike

我正在实现 Windows 8 Spell Checking COM service在没有 ATL 的 C++ 中,但是当 Windows 的 msspellcheckinghost.exe 调用我的 ISpellCheckProviderFactory::SupportedLanguages() 时,它传递 nullptr 作为输出参数,我自然会返回 E_POINTER ...导致失败和事件日志消息:

Failed instantiating third-party spellchecking provider: CLSID {...}, HRESULT 0x80004003.

当我使工厂类和 DLL 加载器使用 ATL 时,主机会正确调用该函数。这是没有意义的,因为正确使用了后续的非 ATL EnumString 实现。那么,为什么工厂需要ATL,而工厂之后却不需要?

更糟糕的是,我不知道如何将调试器附加到主机,因为 msspellcheckinghost.exe 没有记录,所以不知道要传递给它什么。

项目源位于https://github.com/TinoDidriksen/spellers/tree/master/win8。 - 原型(prototype)基本上是从 Microsoft 自己的示例项目中复制的,但我删除了 ATL 部分,因为我希望在运行时从配置文件加载 GUID(该部分有效)。

同样的事情发生在 32 位 OS+DLL 上,所以与此无关。

最佳答案

随着help of MS forums ,问题原来是 ISpellCheckProviderFactory 不是 IClassFactory,DLL 必须返回一个正确的 IClassFactory,而 IClassFactory 又可以 CreateInstance() 实际的提供者工厂。

关于c++ - Win8 的拼写检查 API 将 null 作为输出参数发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29834762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com