zoukankan      html  css  js  c++  java
  • loadlibrary(xxx.dll) 失败 返回14001 由于应用程序配置不正确 应用程序未能启动.重新安装应用程序可能会纠正这个问 .

    欢迎大家拍砖!

    一、应用背景

    有一个在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 FilesMicrosoft Visual Studio 8VC edistDebug_NonRedistx86Microsoft.VC80.DebugCRT 下找到了下列文件:

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

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

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

    注意:

    (1)如果是VS2008版本的那么到C:Program FilesMicrosoft Visual Studio 9.0VC edistDebug_NonRedistx86Microsoft.VC90.DebugCRT路径下找文件。

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

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

    方法三:

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

    方法四:

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


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

     

    三、扩展

     

    解决方法:

     

  • 相关阅读:
    dev GridControl 代码自定义下拉框
    字符串utf-8相互转换
    .net 相关
    dev grid 样式
    winform 重置快捷写法
    winform 代码定义事件
    winform设置默认打印机
    可为空的对象必须具有一个值
    js获取当前日期之前或之后数据
    sql 快捷方法使用
  • 原文地址:https://www.cnblogs.com/lidabo/p/3256201.html
Copyright © 2011-2022 走看看