0

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

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

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

4

1 回答 1

0

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

于 2012-05-14T10:15:32.267 回答