新来的同事电脑出现一个奇怪的问题,vs中写了一个HelloWorld程序,编译运行后报错如下
表现上是win32配置编译后运行,报如上错误,win64的配置编译后运行正常
一开始怀疑是他的VS环境有问题,不过exe放在外边运行也是一样的错误,所以排除。
后来也在网上查了一些资料,基本锁定了是exe需要的CRT库版本没有匹配上。
小工具dependency的截图如下,明明是32位的exe现有依赖的却是64位的C运行库。
于是乎,我开始怀疑他64位的系统里,system32目录下的dll版本是错的,但是用dependency检查了发现没毛病,确实是32位的。省略中间的来回排查和纠结。。。
后来,我回到我的电脑,检查了我系统里的system32目录,发现我的syswow64目录里的msvcp100d.dll和msvcr100d.dll全是32位的,此时,我有点怀疑人生。。不,怀疑直觉。。于是手动百度了windows64和32位的dll使用方案,于是看到了下边这位的答案,简直就是我的问题的翻版。