最近重构某项目过程中发现的, 有同事反馈调试不正常, 很久以前也发生过, 虽然搜索了一下找到解决方案, 但个人觉得还是有必要再记录一下
调试某 CS 结构的应用程序, 大致效果可以看下图:
我们组最终解决方案是: 将编译的目标平台设置为 X64 而不是 AnyCPU 或者 X86
这个问题, 我在前厂开发过一个 OCR(光学字符识别) 客户端工具, 记得非常清楚, 因为当时折腾了很久才找到解决方案
开发这个工具的过程中, 碰到的问题是, 无法 LoadLibrary, 因为我调用的自动识别库是第三方发布出来的, 要调用这个三方库 (要配合 DllImport), 我原来以为直接 COM 组件引用就可以了
但是实际开发的时候, 发现 GetLastError 返回的 code 为 193,MSDN 的解释是:%1 is not a valid Win32 application.
调试的时候, 和上面提到的应用程序中断模式一样效果
反复调试实验后, 最终解决方案是: 将编译的目标平台设置为 X86 而不是 AnyCPU 或者 X64
我想要知道调试发生中断的原因, 想起我们组最近引用了架构部编译生成的一个库, 目标平台是 X64, 而那个 OCR 自动识别库, 大胆推断目标平台可能是 X86
下面就是本文得出的最终结论:
如果你的应用引用了二方库或者三方库, 一定要注意 dll 生成的目标平台, 否则调试时就可能会报应用程序中断模式错误
来源: https://www.cnblogs.com/jeffwongishandsome/p/How-To-Solve-App-Break-Mode-Problem.html