VS2005的程序文件分发问题及解决
2006-06-01 10:26
211 查看
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看看,嗯。
解决方式:
方式一、在目标系统上安装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看看,嗯。
相关文章推荐
- VS2005的程序文件分发问题及解决
- VS2005的程序文件分发问题及解决
- VS2005的程序文件分发问题及解决
- VS2005的程序文件分发问题及解决
- VS2005的程序文件分发问题及解决
- VS2005的程序文件分发问题及解决
- VS2005的程序文件分发问题及解决
- VS2005的程序文件分发问题及解决
- VC2005的程序文件分发问题及解决
- c# 读取其他程序正打开的文件的时“正由另一进程使用,因此该进程无法访问该文件。"的问题解决方法
- 解决由VS2005 SP1带来的问题-在编译WM5程序时
- java linux和windows下文件路径间隔符的写法——解决linux下程序在windows下运行时的上传文件出错问题
- 解决vs2008生成的程序安装文件需要安装.net framework 3.5的问题 [转]
- 完美解决SQL Server 安装问题:以前的某个程序安装已在安装计算机上创建挂起的文件操作
- 【解决问题】windows下配置Boost提示'cl' 不是内部或外部命令,也不是可运行的程序 或批处理文件
- 解决VS2005打开js,css等文件,中文都是乱码的问题
- 解决"未能加载文件或程序集,或它的某一个依赖项,试图加载格式不正确的程序"问题一法
- WinForm程序中两份mdf文件问题的解决(转载 )
- 解决问题:NODE_ENV 不是内部或外部命令,也不是可运行的程序,或者批处理文件
- 经典问题:安装SQL2k时,提示“以前的某个程序已在电脑上安装了挂起文件,需重新启动电脑”的解决方法