混合模式DLL需要延迟加载

时间:2012-05-13 05:37:01

标签: com c++-cli

我创建了一个混合DLL(C ++ / CLI),在从一个普通的ANSI C应用程序成功调用它之后,我继续从C ++ COM服务器调用它(使用相同的C入口点)。但是,即使在COM服务器成功启动或调用DLL之前,我在ntdll.dll中也会遇到“访问冲突”。调用堆栈只有ntdll.dll!ExecuteHandler2重复多次,直到在VS调试输出中报告堆栈溢出。我可以看到我的混合模式DLL和mscoree.dll已加载。

我将混合的DLL添加到COM服务器的延迟加载的DLL选项中,它似乎可以工作。

为什么我编写的C应用程序似乎在没有延迟加载的情况下正常工作时,需要在C ++ COM服务器中加载混合DLL?我该如何调试这个问题(除非这是预期的,但我找不到任何相关内容)?

1 个答案:

答案 0 :(得分:0)

看起来需要初始化COM Appartment。 COM公寓用于处理线程同步。