在这种情况下,我确实有应用程序和 dll 的源代码。
当两者都在没有/NXCOMPAT 的情况下编译时,它们可以很好地协同工作。但是当我用/NXCOMPAT 编译两者时,我在内核空间深处得到了一个段错误。
如果我用 /NXCOMPAT 编译 dll,而没有编译可执行文件,它也可以正常工作。(我想这并不奇怪,因为可执行文件的 DEP 设置被强制加载到加载的 dll 上。)
我之前在 MainCRTStartup 中看到了一个段错误(注意:不是 dll 版本),启用 DEP 后,这是由另一个链接器选项引起的。但是,在这种情况下,未设置其他链接器选项,所以我知道这不是答案。
有人知道我应该在哪里寻找原因吗?
编辑:进一步的陌生感。我一直在 VS 2008 的调试器中运行它,但是当我尝试在没有附加调试器的情况下运行它时,段错误消失了。我发现这是一个非常不令人满意的解决方案,因为我仍然不知道它为什么会这样做。
编辑第二个:也在 VS 2013 Express 的调试器中运行的段错误。