VS2008下编的程序生成的EXE 在没有安装VS2008的计算机上能运行吗
我的系统是VISTA用VS2008编的一个程序RELEASE生成的EXE文件传给别人的XP系统用VC6的电脑就不能打开为什么?我能够打开XP下VC6编的程序...
我的系统是VISTA 用VS2008编的一个程序RELEASE生成的EXE文件 传给别人的XP系统用VC6的电脑就不能打开 为什么?
我能够打开XP下VC6编的程序 展开
我能够打开XP下VC6编的程序 展开
展开全部
VC2005运行库文件
随着Visaul Stdio 2005的发布,VC++ 2005也有部分同学在使用,可是往往编写的程序不能在其他电脑中执行,有些只能发布成静态连接库的形式发布,现在大家可以下载vc++2005的运行库,约2.6Mb,相对26MB的.net 运行库要小多了,这样大家以后的程序可以大大减肥了!
另附上:
VC2005编译出来的程序文件,采用了manifest方式来指定dll文件。对于win98、win2000系统,把exe文件和VC的 dll连接库放到一起就成了。对于winxp、win2003系统就要麻烦的多了,VC的连接库默认是被放到了winsxs目录下,结果造成在这些系统上,直接拷贝exe文件,往往是不能运行(找不到msvcr80.dll、mfc80.dll文件等),或者在事件日志中报错。
解决方式:
方式一、在目标系统上安装2005版vcredist_x86.exe。
方式二、直接拷贝VS8目录下的VC \ redist \ x86 \ 目录下的 Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC几个文件夹,到exe所在的目录下,目录结构如下:
.\myapp.exe
.\myapp.dll
.\Microsoft.VC80.CRT\
.\Microsoft.VC80.MFC\
.\Microsoft.VC80.MFC\Microsoft.VC80.MFCLOC\
然后修改Microsoft.VC80.MFCLOC目录下的Microsoft.VC80.MFCLOC.manifest文件,将其中的version="8.0.50727.42",修改为version="8.0.50608.0"。
方式二的目录结构,在xp和2003下是没有问题的,但是在win98/win2000中,因为exe和dll不在同一目录下,就会出现找不到dll的问题。
有什么更好的解决呢?呵呵,国外的一个大牛(http://blog.kalmbachnet.de)找到一绝招:
方式三、
1、首先编译myapp.exe的时候,在配置中,选择生成单独的manifest文件,如:myapp.exe.manifest。
2、将myapp.exe、myapp.exe.manifest拷贝到一个目录下
3、将Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC几个目录下的文件,都拷贝到myapp.exe所在的目录下。
4、将Microsoft.VC80.MFCLOC.manifest文件中的version="8.0.50727.42",修改为version="8.0.50608.0"。
5、编辑myapp.exe目录下的所有 .manifest文件,将文件中的publicKey键值删除,一般是publicKeyToken="1fc8b3b9a1e18e3b"
6、然后运行myapp.exe看看,嗯。
网友回复:首先你要用depends看看你的程序依靠哪些dll,比如依靠msvcr80.dll、msvcp80.dll、mfc80u.dll
那么你需要这样发布:
/***************************************
yourapp.exe
msvcr80.dll
msvcp80.dll
mfc80u.dll
Microsoft.VC80.CRT.manifest
Microsoft.VC80.MFC.manifest
other_thirdparty.dll
****************************************/
这些文件必须在同一目录下,
Microsoft.VC80.CRT.manifest和Microsoft.VC80.MFC.manifest
可以分别在
Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT
和
Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC目录下找到
我试过了,这样发布是没问题的
ps: 楼主你给的分太少了,这样的问题应该多给些分,这回便宜你了
随着Visaul Stdio 2005的发布,VC++ 2005也有部分同学在使用,可是往往编写的程序不能在其他电脑中执行,有些只能发布成静态连接库的形式发布,现在大家可以下载vc++2005的运行库,约2.6Mb,相对26MB的.net 运行库要小多了,这样大家以后的程序可以大大减肥了!
另附上:
VC2005编译出来的程序文件,采用了manifest方式来指定dll文件。对于win98、win2000系统,把exe文件和VC的 dll连接库放到一起就成了。对于winxp、win2003系统就要麻烦的多了,VC的连接库默认是被放到了winsxs目录下,结果造成在这些系统上,直接拷贝exe文件,往往是不能运行(找不到msvcr80.dll、mfc80.dll文件等),或者在事件日志中报错。
解决方式:
方式一、在目标系统上安装2005版vcredist_x86.exe。
方式二、直接拷贝VS8目录下的VC \ redist \ x86 \ 目录下的 Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC几个文件夹,到exe所在的目录下,目录结构如下:
.\myapp.exe
.\myapp.dll
.\Microsoft.VC80.CRT\
.\Microsoft.VC80.MFC\
.\Microsoft.VC80.MFC\Microsoft.VC80.MFCLOC\
然后修改Microsoft.VC80.MFCLOC目录下的Microsoft.VC80.MFCLOC.manifest文件,将其中的version="8.0.50727.42",修改为version="8.0.50608.0"。
方式二的目录结构,在xp和2003下是没有问题的,但是在win98/win2000中,因为exe和dll不在同一目录下,就会出现找不到dll的问题。
有什么更好的解决呢?呵呵,国外的一个大牛(http://blog.kalmbachnet.de)找到一绝招:
方式三、
1、首先编译myapp.exe的时候,在配置中,选择生成单独的manifest文件,如:myapp.exe.manifest。
2、将myapp.exe、myapp.exe.manifest拷贝到一个目录下
3、将Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC几个目录下的文件,都拷贝到myapp.exe所在的目录下。
4、将Microsoft.VC80.MFCLOC.manifest文件中的version="8.0.50727.42",修改为version="8.0.50608.0"。
5、编辑myapp.exe目录下的所有 .manifest文件,将文件中的publicKey键值删除,一般是publicKeyToken="1fc8b3b9a1e18e3b"
6、然后运行myapp.exe看看,嗯。
网友回复:首先你要用depends看看你的程序依靠哪些dll,比如依靠msvcr80.dll、msvcp80.dll、mfc80u.dll
那么你需要这样发布:
/***************************************
yourapp.exe
msvcr80.dll
msvcp80.dll
mfc80u.dll
Microsoft.VC80.CRT.manifest
Microsoft.VC80.MFC.manifest
other_thirdparty.dll
****************************************/
这些文件必须在同一目录下,
Microsoft.VC80.CRT.manifest和Microsoft.VC80.MFC.manifest
可以分别在
Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT
和
Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC目录下找到
我试过了,这样发布是没问题的
ps: 楼主你给的分太少了,这样的问题应该多给些分,这回便宜你了
展开全部
修改你VC项目的属性:常规选项中“MFC的使用”这里不要选择“在共享DLL中使用MFC”要选择“在静态库中使用MFC”,然后重新编译。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
理论上是可以兼容的啊?是不是你生成的时候选错了选项。vs2008前段时间用过,不过没生成exe的,都做网页了,该觉好像没你这个问题。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是单个exe文件传给他的吗 你把你整个程序给他啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询