gpt4 book ai didi

c++ - 从新线程调用时出现 COM 0x8001010E 错误

转载 作者:行者123 更新时间:2023-11-28 02:18:02 25 4
gpt4 key购买 nike

我有一个 c++ DLL,它使用 IDispatch 接口(interface)调用第三方 DLL 上的方法。如果我从原始线程调用这些方法,但如果启动一个新线程(不是调用 CoCreateInstance 的线程)以在它抛出 0x800101E 错误后调用该方法,它就会起作用。我还在第二个线程上尝试了 CoInitialize,但没有成功。

最佳答案

错误 0x8001010E 是 RPC_E_WRONG_THREAD“应用程序调用了为不同线程编码的接口(interface)。”。

您违反了 COM 单元规则,并且您正试图在不属于指针有效单元的线程上使用接口(interface)指针。要将接口(interface)指针传递给另一个公寓,请使用编码(marshal)处理。

参见 What is COM marshaling and how do I use it?CoMarshalInterThreadInterfaceInStream function ,还有这个 Understanding The COM Single-Threaded Apartment .

关于c++ - 从新线程调用时出现 COM 0x8001010E 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33430543/

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