我面临的问题本质上是 described here ,即:
CoCreateInstance
激活的。 我发现简单地将 list 嵌入到我的 DLL 中是行不通的,如链接问题中所述,我需要手动切换 Activation Context。
我不明白的是我需要在何时何地切换激活上下文:我是否只需要将我对
CoCreateInstance
的调用包装在 CActCtxActivator ScopedContext
(*) 之类的东西中,还是需要将所有调用包装到 3rd 方组件中? (据我所知, ISOLATION_AWARE_ENABLED
应该提供帮助。)那么,在使用免注册COM时,需要在哪里切换Activation Context呢?
(*) : 或
AFX_MANAGE_STATE(AfxGetStaticModuleState());
(**) 或其他。(**):实际上,
AFX_MANAGE_STATE
曾经可以工作,但不再适用于“较新”的 MFC 版本。见,例如VS2012: Removed support for active contexts switching in MFC? :最佳答案
考虑到第 3 方组件没有其他依赖项,您只需要包装对 CoCreateInstance
的调用。
如果它有其他依赖项,那么您需要将调用包装到 3rd 方组件中。
关于winapi - 我需要在哪里切换激活上下文?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19299413/