欢迎大家拍砖!

一、应用背景

有一个在win7中用VS2008编译成功,运行正常的程序:Exe+DLL;

放到XP虚拟镜像上运行却提示:LoadLibrary返回14001。

(1) 后来采用了下面方法中的“方法一”解决了。

(2) 但在方法一的基础上还要安装VS2008对应的分发包vcredist_x86.exe

(VS2005的安装目录下提供了此文件,但在VS2008去不提供,但可到网上下载)。

参考文章:

http://hi.baidu.com/roger_long/item/867a7cf6fd8cf4cc521c26c5

二、网上资料

有些机器出现这样的问题,有些没有!有些控件无问题,有些有问题。以前做安装测试都是项目经理负责,我从来不关心这种问题。现在的公司,没有这样全职的职位负责。还是自己来吧。

根据经验出现这种问题,肯定动态链接的DLL问题
1.在可以使用控件机器上使用 depends 发现,原来比较特别就是安装了CRT运行
2.不行的机器上,无安装CRT
3.为什么有一个控件,就算是无安装CRT也可以运行,但大家都静态连接到ATL
4.于是把xp的CRT DLL复制到2003,还是不行(可能2003与xp CRT不同,没有继续尝试)
5.到网上找找还真到答案 "loadlibrary 失败 由于应用程序配置不正确 应用程序未能启动 crt"

============================================================================
解决:

方法一:

在C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:

msvcm80d.dll
msvcp80d.dll
msvcr80d.dll
Microsoft.VC80.DebugCRT.manifest

把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以运行那个程序了。

其他release版,MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识!

注意:

(1)如果是VS2008版本的那么到C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT路径下找文件。

(2)如果是放到system32下,那么还要改系统环境变量。

方法二:
修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。

方法三:

工程-》属性-》配置属性-》常规-》MFC的使用,选择"在静态库中使用mfc"
这样生成的exe文件应该就可以在其他机器上跑了。

方法四:

你的vc8安装盘上找到再分发包vcredist_xxx.exe和你的程序捆绑安装

方法一:原来我就差 Microsoft.VC80.DebugCRT.manifest 这个文件就成功了,可以那个时候没有继续试
方法二:这个方法最好,适应多种工程
方法三:MFC才适用吧
方法四:比较大的项目比较好!

三、扩展

解决方法:

最新文章

  1. tomcat报错java.lang.IllegalArgumentException: Document base XXXXX does not exist or is not a readable directory
  2. Kotlin笔记
  3. Pod(转)
  4. 包管理器Bower
  5. display:none与visibility: hidden的区别
  6. 名词解释:DRAM, SRAM, SDRAM等
  7. inputtype
  8. Link-Cut-Tree题目泛做(为了对应自己的课件)
  9. Nubiers to follow
  10. 使用jQuery监听扫码枪输入并禁止手动输入的实现方法
  11. git向码云上传代码总结
  12. String对象常量池特性对synchronized对象的影响
  13. KMPlayer 一打开总是出现右面的窗口 导航区 怎样设置不会自动打开
  14. 在Ubuntu17.04中遇到无法清空回收站解决方法
  15. PAT甲题题解-1019. General Palindromic Number (20)-又是水题一枚
  16. 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件上传漏洞分析
  17. POI操作word和html相互转化
  18. fiddler设置显示区域参数
  19. Session和几种状态保持方案理解
  20. 关于Oracle分区表的理解

热门文章

  1. Windows下连接php5.3+sql server2008
  2. 【HDU1102】Constructing Roads(MST基础题)
  3. [置顶] vi、akw和sed总结
  4. ListView之SimpleAdapter
  5. 修改UISearchBar placeholder textColor
  6. 安卓Menu键的问题
  7. [Hapi.js] Logging with good and good-console
  8. Swift之贪婪的UIButton
  9. Android日志系统驱动程序Logger源代码分析
  10. STL中map,set的基本用法示例