【问题标题】:Mixed mode DLL requires delay loading混合模式 DLL 需要延迟加载
【发布时间】:2012-05-13 05:37:01
【问题描述】:

我创建了一个混合 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 服务器中延迟加载?我该如何调试这个问题(除非这是预期的,但我找不到任何相关信息)?

【问题讨论】:

  • 听起来像LoaderLock,DllMain运行时无法加载CLR。使用 Debug + Exceptions, Throw 复选框捕获异常。

标签: com c++-cli


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 2019-06-14
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 2017-02-11
    相关资源
    最近更新 更多