Microsoft Visual C++ 2008 发布程序的部署问题
2010-11-01 13:41
441 查看
今天在发布基于mfc的程序时,在其他电脑上无法正常work,后来发现是由于缺少vc基础库的缘故,但又不想把vcredist_x86附带出去,于是搜到下面的方法,目前采用方式5:
VC2008开发的程序的发布方式可以有5种方式:
1. 采用静态链接到crt和MFC. 只要你拥有组成程序的所有源代码,你就可以采用这种方式,
这种方式除了程序变大一点,好处多多:
1) 不必重新发布vc2008基础库vcredist_x86.exe(安装到WinSxS).
2) 不必产生,嵌入manifest.
3) 也不把vc2008基础库放在程序所在目录.
把动态链接改为静态链接方法:项目->配置->配置属性->常规 在静态库中使用MFC
2. exe(嵌入manifest) + vcredist_x86.exe
确保程序正确产生并嵌入manifest文件,然后把程序和vcredist_x86.exe一起发布.用户先安装
vcredist_x86.exe(安装到WinSxS),然后程序就能正常运行了.
3. exe(嵌入manifest) + 用到的基础库文件放到程序目录(包括库文件本身的manifest文件)
确保程序正确产生并嵌入manifest文件,然后把程序用到的vc2008基础库相关文件复制到程序
所在目录,这种方式适用于用户没有安装过vcredist_x86.exe,一旦用户安装过vcredist_x86.exe,
若WinSxS中的相关文件遭到破坏,那么即使在程序目录放上所有用到的vc2008基础库,程序也跑
不起来;若WinSxS中的相关文件正常,那么程序目录下的相关文件就是多余的了,删掉它们程序也能
正常运行.
基础库:(amy注:目前不是很清楚这种方式下是否还需要Microsoft Visual Studio 9.0/VC/redist/x86路径下的Microsoft.VC90.MFC里的几个mfc文件,若是方式5的话必须要)
VC8: msvcm80.dll, msvcp80.dll, msvcr80.dll
VC9: msvcm90.dll, msvcp90.dll, msvcr90.dll
4. exe(自行编写manifest) + vcredist_x86.exe
5. exe(自行编写manifest) + 用到的基础库文件放到程序目录(包括库文件本身的manifest文件)
(amy注:在Microsoft Visual Studio 9.0/VC/redist/x86/路径下可以看到有Microsoft.VC90.CRT和Microsoft.VC90.MFC两个文件夹,需要把里面的文件共9个都要提取出来做基础库。)
目前就是这么实现的。若安装了sp1,也要保证编译程序依赖的基础库与发布时用到的基础库版本保持一致。
VC2008开发的程序的发布方式可以有5种方式:
1. 采用静态链接到crt和MFC. 只要你拥有组成程序的所有源代码,你就可以采用这种方式,
这种方式除了程序变大一点,好处多多:
1) 不必重新发布vc2008基础库vcredist_x86.exe(安装到WinSxS).
2) 不必产生,嵌入manifest.
3) 也不把vc2008基础库放在程序所在目录.
把动态链接改为静态链接方法:项目->配置->配置属性->常规 在静态库中使用MFC
2. exe(嵌入manifest) + vcredist_x86.exe
确保程序正确产生并嵌入manifest文件,然后把程序和vcredist_x86.exe一起发布.用户先安装
vcredist_x86.exe(安装到WinSxS),然后程序就能正常运行了.
3. exe(嵌入manifest) + 用到的基础库文件放到程序目录(包括库文件本身的manifest文件)
确保程序正确产生并嵌入manifest文件,然后把程序用到的vc2008基础库相关文件复制到程序
所在目录,这种方式适用于用户没有安装过vcredist_x86.exe,一旦用户安装过vcredist_x86.exe,
若WinSxS中的相关文件遭到破坏,那么即使在程序目录放上所有用到的vc2008基础库,程序也跑
不起来;若WinSxS中的相关文件正常,那么程序目录下的相关文件就是多余的了,删掉它们程序也能
正常运行.
基础库:(amy注:目前不是很清楚这种方式下是否还需要Microsoft Visual Studio 9.0/VC/redist/x86路径下的Microsoft.VC90.MFC里的几个mfc文件,若是方式5的话必须要)
VC8: msvcm80.dll, msvcp80.dll, msvcr80.dll
VC9: msvcm90.dll, msvcp90.dll, msvcr90.dll
4. exe(自行编写manifest) + vcredist_x86.exe
5. exe(自行编写manifest) + 用到的基础库文件放到程序目录(包括库文件本身的manifest文件)
(amy注:在Microsoft Visual Studio 9.0/VC/redist/x86/路径下可以看到有Microsoft.VC90.CRT和Microsoft.VC90.MFC两个文件夹,需要把里面的文件共9个都要提取出来做基础库。)
目前就是这么实现的。若安装了sp1,也要保证编译程序依赖的基础库与发布时用到的基础库版本保持一致。
相关文章推荐
- Microsoft Visual C++ 2008 发布程序的部署问题(转)
- 发布Microsoft Visual C++ 2008程序的部署问题
- Microsoft Visual C++ 2008 发布程序的部署问题
- Microsoft Visual C++ 2008 发布程序的部署问题
- Microsoft Visual C++ 2008 发布程序的部署问题
- Microsoft Visual C++ 2008 发布程序的部署问题
- Qt生成并发布程序在别的机器上运行 发生Microsoft Visual C++ Runtime Library 错误
- Qt生成并发布程序在别的机器上运行 发生Microsoft Visual C++ Runtime Library 错误
- Microsoft Visual C++ 程序的部署
- Microsoft Visual Studio 开发的C++程序软件发布相关事宜
- Microsoft Visual C++ 程序的部署方法
- VC 2008 发布程序部署问题
- 读书札记:#include"stdafx.h" 问题的解决--Microsoft Visual Studio 2008之C++
- Microsoft Visual C++ 2005 Redistributable不能删除旧版本的问题
- Microsoft Visual C++ Toolkit 2003 发布
- windows下pip安装库遇到了Microsoft Visual C++ 9.0 is required的问题
- Microsoft Visual C++ 14.0 is required问题的解决
- Visual c++ 2008 程序部署问题
- xampp安装提示:示找不到文件“-n”,需要安装Microsoft Visual C++ 2008 Redistributable Package (x86)
- Microsoft Visual Studio Team System 2008 Team Suite - CHS 在安装期间遇到问题