今天写了一个UDP通讯的服务程序,用的VS2008,写好之后在我的电脑上测试没有问题,可以收到客户端发送的数据,也可以返回,可是当拿到别人的机子上测试时就出问题了。
安装服务时没什么问题,可安装好之后启动就提示“发生系统错误:14001。由于应用程序配置不正确,应用程序未能启动……“。
百度之后,发现是缺少DLL文件,网上说需要安装Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)(点击打开链接),可是安装之后还是不管用。
于是继续百度,发现这篇文章VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题,文章说:“
1、没有打过任何补丁的VS2008
该版本对应的CRT/MFC/ATL库的版本号为9.0.21022.8,这个版本号在后面 会用到。这个版本的程序部署比较简单,直接把VC安装目录下的redist目录(C:\Program Files\Microsoft Visual Studio 9.0\VC\redist)中需要的库以及对应的manifest文件拷贝到执行程序同目录下,这样程序到任何机器上都能够正常运行了。
可是说的过于粗略,没有说应该拷贝哪个文件。无奈,继续百度,发现这篇文章由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题,文章说:应拷贝MSVCR80D.DLL, msvcrt.dll和Microsoft.VC80.DebugCRT.manifest这三个文件到应用程序所在目录。msvcrt.dll文件我没找到,可能是VS2005的吧,不过没影响。
于是按照文章说的拷贝到应用程序所在的目录,启动。还是出现错误:应用程序正常初始化失败(0X0000034)。
刚开始以为是电脑的环境没建好,可后来检查之后发现不是这个原因。
于是我就把C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT目录下的DLL文件都拷贝到应用程序所在的目录,发现错误解决。
总结:
1.安装Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)之后问题没有解决,看网上有的网友解决了,我也不知道为什么我的不行。
2.将C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT目录下msvcr90d.dll, msvcp90d.dll和Microsoft.VC90.DebugCRT.manifest 拷贝到应用程序所在目录,问题解决。