问题说明:
1.公司的硬件新加了一个相机模块
需要从相机中获取图片,用以计算屈光值。
根据相机厂家提供的头文件SnCam.h,SnCam.lib,SnCam.dll封装了一个类文件用以读取相机的图片。
单独测试Demo时,读图成功没有任何异常。
但是把代码加入到公司软件时,每次初始化相机函数时软件闪退,及时在公司软件的最开始处调用也会闪退。
事件管理器定位错误原因
打开事件管理器,具体怎么打开,自行百度。
windows日志--》应用程序
显示错误的详细信息:
错误应用程序名称: NewScanModule.exe,版本: 1.0.0.5,时间戳: 0x5cec0d16错误模块名称: MVCAMSDK_X64.DLL,版本: 2.1.5.18,时间戳: 0x58da0a0a异常代码: 0xc0000005错误偏移量: 0x000000000003088e错误进程 ID: 0x2590错误应用程序启动时间: 0x01d514a77d3553c3错误应用程序路径: D:\3500_old - 0521- rdm\common\NewScanModule.exe错误模块路径: C:\Windows\SYSTEM32\MVCAMSDK_X64.DLL报告 ID: 0b20de5e-438a-4f60-8ff4-7c13bd9137d7错误程序包全名: 错误程序包相对应用程序 ID:
猜想1:出错的原因是新加的相机和迈德威视相机SDK(MVCAMSDK_X64.dll)冲突,在公司软件搜索【MVCAMSDK_X64.lib】发现MindVision.cpp中包含了迈德威视相机SDK的动态库。
解决方法:去除MindVision.cpp后重新编译后,公司软件闪退问题没有了。
猜想2:在Demo中添加MindVision后,也会在初始化相机时,出现闪退问题。
添加后证实了猜想2的正确性。
重现了闪退问题的Demo发送给厂家:
最后定位发现,此款相机的接口名与迈德威视相机SDK的接口名相同所以,所以每次初始化相机时都进入了迈德威视相机SDK
从而导致闪退。