IC读卡器留下的dll坑0x000007b

公司又找我说读卡器刷卡没反应。这才记起来好像每张卡得初始化一次。把卡里的密码记载到读卡器上,于是又找了以前写的初始化程序,找到了发过去,结果问题一大堆。
第一个问题,运行时提示缺少msvcp120d.dll。看一看我的本地目录也没有这个dll,仔细一看我的系统目录确实有这个文件,而公司的电脑上没有,于是复制了一份过去,结果还是显示缺少这个文件,猜测是该文件依赖的dll公司电脑上没有。于是去补充了c++库。结果还是一样。最终再思考一下绝得没道理,结果是我把msvcp120d.dll看成了msvcr120d.dll。搞了一个大坑。于是把msvcp120d.dll复制过去,问题解决。

但是第一个问题是,返回设备号-32。第一反应是找不到设备,感觉没道理,于是删除了电脑上的所有com口,结果还是一样。最后经过测试表明,读卡器插入电脑根本不会产生新的串口。
后面突然想起来VC写的程序好像可以调成x64模式的,在Debug配置,活动解决方案平台中,也就是调成64位程序。调了之后,解决了-32的问题。

紧接着又提示0x000007b。网上一查这种情况多半是dll存在,但是不对,于是猜测可能是dll位数的问题,但是我的电脑是64位的,公司电脑是64位的,没道理我这可以运行他那就不行,文件的版本是一样的。虽然这么想,也还是把涉及到的dll全部在https://cn.dll-files.com/search/网站上下载对应64位的,居然解决了问题。

但是虽然可以运行了,但是运行过程中居然提示加载mwrf32.dll失败,mwrf32.dll是唯一没有替换成64位的,因为找不到,于是猜测mwrf32.dll出了问题,虽然在我自己的电脑上没问题,但是经过上个问题明显的我电脑上dll可能会存在问题,于是看了看我程序目录的mwrf32.dll和sysdem32目录的mwrf32.dll,果然不一样,删除了程序目录的mwrf32.dll,发现我电脑还是可以运行,但是删除了这个系统里的mwrf32.dll,就出现了和公司一样的情况,至此,终于确定是mwrf32.dll出问题,而我电脑上的程序本地的所有dll本来是有问题的,但是我系统system32目录下存在了正确的版本,才可以正确运行。

你可能感兴趣的:(开发中的问题,windows)