VS2010编写exe程序,在其他电脑上无法运行,提示缺少mfc100.dll的解决办法
2015-06-09 16:26
781 查看
问题:
在自己电脑上用VS2010编写的VC++程序(使用MFC库),不能在其他电脑上运行。双击提示:
“无法启动此程序,因为计算机中丢失mfc100.dll 尝试重新安装该程序以解决此问题。”
解决方案:
方案1.采用静态编译
使用VS2010编译的程序在windows xp中运行时,经常会出现找不到相关的DLL文件,我们可以使用静态编译的方法把这些运行依赖文件打包到*.exe中来,以减少对环境的依赖。
一般可以配置以下两项:
(1)项目 -> **属性 -> 配置属性 -> 常规 -> MFC的使用 :在静态库中使用MFC。
(2)项目 -> **属性 -> 配置属性 -> C/C++ -> 代码生成 -> 运行库 :多线程(/MT)。
方案2.将mfc100.dll和应用程序一起打包发布,并在该包中加入安装控件的说明文件
附:mfc100.dll控件常规安装方法(说明文件):
①将下载来的mfc100.dll拷贝到指定目录(一般是system系统目录或放到软件同级目录里面),或者重新添加文件引用。 若您的系统是Windows XP/WIN7/Vista系统(32位),请将mfc100.dll复制到C:\Windows\System32目录下;若您的系统是64位,请将文件复制到C:\Windows\SysWOW64目录。
②点击 开始 -> 运行,输入"regsvr32 mfc100.dll",回车即可解决。
或者将下面的代码保存为“注册.bat”(方法:新建.txt文档,打开文档输入代码后保存关闭,更改文件名及扩展名为“注册.bat”),放到dll文件同级目录(只要在同一个文件夹里面有这两个文件即可),双击注册.bat,就会自动完成mfc100.dll注册(win98不支持)。
下面是32系统的注册bat文件(64位的请将下面的system32替换为SysWOW64即可。)
代码如下:
@echo 开始注册
copy mfc100.dll %windir%\system32\
regsvr32 %windir%\system32\mfc100.dll /s
@echo mfc100.dll注册成功
@pause
方案3.将程序和vcredist_x86.exe一起打包发布(或提示用户下载并安装vcredist_x86.exe)
下载并安装vcredist_x86.exe即可。
vcredist_x86.exe下载地址:
http://www.microsoft.com/zh-cn/download/details.aspx?id=8328
而我这边犯了个低级的错误,由于电脑是64位机,之前是将C:\Windows\System32 中的mfc100.dll和exe文件一起发给客户,结果客户那边显示如下
图错误,折腾了好久后面发现是copy的mfc100.dll有问题 应该从C:\Windows\SysWOW64找到mfc100.dll发给客户
(备注;如果你给客户的vs程序是debug版本的,给的dll也需要debug版本的,即mfc100d.dll,而release 对应mfc100.dll)
在自己电脑上用VS2010编写的VC++程序(使用MFC库),不能在其他电脑上运行。双击提示:
“无法启动此程序,因为计算机中丢失mfc100.dll 尝试重新安装该程序以解决此问题。”
解决方案:
方案1.采用静态编译
使用VS2010编译的程序在windows xp中运行时,经常会出现找不到相关的DLL文件,我们可以使用静态编译的方法把这些运行依赖文件打包到*.exe中来,以减少对环境的依赖。
一般可以配置以下两项:
(1)项目 -> **属性 -> 配置属性 -> 常规 -> MFC的使用 :在静态库中使用MFC。
(2)项目 -> **属性 -> 配置属性 -> C/C++ -> 代码生成 -> 运行库 :多线程(/MT)。
方案2.将mfc100.dll和应用程序一起打包发布,并在该包中加入安装控件的说明文件
附:mfc100.dll控件常规安装方法(说明文件):
①将下载来的mfc100.dll拷贝到指定目录(一般是system系统目录或放到软件同级目录里面),或者重新添加文件引用。 若您的系统是Windows XP/WIN7/Vista系统(32位),请将mfc100.dll复制到C:\Windows\System32目录下;若您的系统是64位,请将文件复制到C:\Windows\SysWOW64目录。
②点击 开始 -> 运行,输入"regsvr32 mfc100.dll",回车即可解决。
或者将下面的代码保存为“注册.bat”(方法:新建.txt文档,打开文档输入代码后保存关闭,更改文件名及扩展名为“注册.bat”),放到dll文件同级目录(只要在同一个文件夹里面有这两个文件即可),双击注册.bat,就会自动完成mfc100.dll注册(win98不支持)。
下面是32系统的注册bat文件(64位的请将下面的system32替换为SysWOW64即可。)
代码如下:
@echo 开始注册
copy mfc100.dll %windir%\system32\
regsvr32 %windir%\system32\mfc100.dll /s
@echo mfc100.dll注册成功
@pause
方案3.将程序和vcredist_x86.exe一起打包发布(或提示用户下载并安装vcredist_x86.exe)
下载并安装vcredist_x86.exe即可。
vcredist_x86.exe下载地址:
http://www.microsoft.com/zh-cn/download/details.aspx?id=8328
而我这边犯了个低级的错误,由于电脑是64位机,之前是将C:\Windows\System32 中的mfc100.dll和exe文件一起发给客户,结果客户那边显示如下
图错误,折腾了好久后面发现是copy的mfc100.dll有问题 应该从C:\Windows\SysWOW64找到mfc100.dll发给客户
(备注;如果你给客户的vs程序是debug版本的,给的dll也需要debug版本的,即mfc100d.dll,而release 对应mfc100.dll)
相关文章推荐
- 增量式编码器的工作原理和使用方法
- 主题切换及其管理
- 隐马尔科夫学习七(一)
- Android中Gridview和ViewPager显示图片的优化处理(2)
- php webService wsdl
- swift学习记录(private和public)
- 项目中存储过程函数
- 数据挖掘
- apache反向代理(转)
- 查询电脑系统的安装时间
- navicat for mysql 10.1.7注册码
- Uva - 202 - Repeating Decimals
- iOS下截屏的几种方法
- Uva - 202 - Repeating Decimals
- 分页控件:pager-taglib与SpringMVC结合实例
- Android 中compiledSDKVersion,minSdkVersion,targetSdkVersion的含义
- asp.net mvc4 简单使用Autofac依赖注入小结
- mvc 分部视图(Partial)显示登陆前后变化以及Shared文件夹在解决方案资源管理器中没有显示的问题
- 用Time Machine做更换电脑工具
- C#中使用ListView动态添加数据不闪烁并显示当前插入值