出错程序关键词:win7_x64, mfc, openssl;
今天把编译好的的win7 x64程序拿去虚拟机测试, 一运行就跳出了个““应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。”的提示框(编译出的32位程序正常);以前没有印象碰到过这个提示,蛮新鲜;问度娘吧,一百出来一大堆,小舒一口气;随便翻了几页结果,内容差不多,都说是DirectX9没有安装或者Directx9文件损坏,想想我新装的虚拟机,这也完全有可能;于是乎,从最简单的方法开始试,
按要求把本机system32下的d3dx9_39.dll、d3dx9_40.dll、d3dx9_41.dll、d3dx9_42.dll、d3dx9_43.dll、xinput1_3.dll几个文件复制到了虚拟机syswow64目录下,运行程序,还是出错;微怔了下,好吧,还有其它方法,我再试;
随下载90+M的DirectX11.0安装程序(选11.0没选9.0是因为微软的向下兼容性确实是没话说的,安装好后比对了虚拟机syswow64与本机system32下direct相关文件确实一样),无奈网络不给力,等了二十多分钟下载好了,立即拷贝虚拟机,安装,重启一操作流水般完成,再运行程序,又出错了;微怒了! 看着百度经验中还说着第三个方法,
一搜,DirectX修复工具又有70+M!皱着眉头想着还要不要再下下来,唉,下吧,问题总得解决不是,尼玛这次提示下载完成要一个多小时,这破网速,等了1分钟剩余依然没有要改观的意思,随立即取消掉了;
问题还没解决!!肿么办!!本能的,第一想法,再去看代码吧!!!
郁闷的瞅着代码,忽然看到两行,
#pragma comment(lib, "ssleay32.lib")
#pragma comment(lib, "libeay32.lib")
会不会和这个lib文件有关?这个地方在我把程序编译成x64位时就出错了(原来用的openssl编译成的x32位库文件,重新编译出openssl x64位库文件后替换了这里,程序编译成功),有疑惑就试试呗;随打开openssl目录,从out32目录中复制这两个文件进行了替换(原来从out32dll目录赋值的),再次编译,拷贝到虚拟机,运行成功了!简单测试,程序一切正常! 问题应就出在这个地方了~但常听程序猿都有轻微强迫症....所以又从out32dll拷贝了这两个文件进行替换,再次编译拷贝虚拟机运行,错误提示框再次出现了....好吧,问题就是出在这里了....