【发布时间】:2012-01-24 01:56:34
【问题描述】:
我的程序由 VSTS VSinstr 工具检测,以收集覆盖率信息。但是在运行我的检测二进制文件时,特别是我的一个 COM dll,我的程序一直在退出点崩溃。
我调试发现崩溃的原因是:
- 首先,我使用 coLoadLibrary( bAutoFree = TRUE ) 加载我的 COM dll。
- 我的程序做了一些工作。
- 来到出口点。
- 然后,我的 COM dll 被卸载。 WINDBG 表示它的 DllMain 是用 dwReason == DLL_PROCESS_DETACH 调用的。
- 我的 COM dll 中的代码被执行并引发访问冲突(代码 c0000005)。让我疑惑的是,此时_AtlModule.m_nLockCnt的值还是等于2!
有什么想法吗?
【问题讨论】:
-
你为什么调用 CoLoadLibrary 而不是 CoCreateInstance?你打电话给 CoFreeLibrary 吗?