一、背景介绍

不久前用Qt开发了一款小工具在公司使用,Debug运行时一切正常。可是当Release编译发布打包之后,运行时弹出这样的提示框:

略一思考,首先排除了DLL缺失的可能性。我知道Qt应用程序在发布的时候,需要将相关DLL都拷贝到同一个目录下,还得把平台插件文件夹也加进来。因此,整个发布后的程序组织结构如下:

因此排除了DLL缺失的问题。那么可能是什么原因呢?在Google中搜索错误代码0xc000007b,不少帖子提示是库的版本不一致。有可能是因为在64位程序中引用了32位的库,或者在32位的程序中引入了64位的库导致出错的。怎么确定呢?使用Dependency Walker即可查看:

可以看到,我的程序是64位版本的,但是确实引用了两个32位的库。那么,知道了原因了就好办了。

二、解决方案

(1)方案一:方法比较简单,将32位的库都替换成64位的库。这个通过设置VS的链接器选项就可以完成。一般是因为粗心而导致链接到了版本不一致的库,但是在Debug和编译时都不报错,略感无语。

(2)方案二:对于第一种方案不适用的情况,必须采用第二种方案了。本人在第二种情况中纠缠了多时。经过反复确认,工程类型设置成了X64类型,库也替换成了x64的,但是编译出来的程序中总会链接到32位的库。这样,不管我怎么编译修改,仍然还是弹出0xc000007b错误提示框。解决方法是:修改工程的manifest文件。

像这样:把processorArchitecture都修改成amd64,重新编译程序后链接的就是64位的库了。仅仅只要修改这两个地方,如果改动其他地方,可能导致程序出错:

三、参考链接

1. http://blog.csdn.net/vbcom/article/details/7245186

2. https://msoos.wordpress.com/2010/09/11/0xc000007b-error-solution/

3. http://stackoverflow.com/questions/10492037/the-application-was-unable-to-start-correctly-0xc000007b

4. https://social.msdn.microsoft.com/Forums/en-US/c0bc5e8e-1b17-40e2-9476-c1900b5b04ea/comctl32dll-64-bit-version?forum=netfx64bit

5. http://stackoverflow.com/questions/24148196/incorrect-comctl32-dll-is-loaded-after-porting-a-project-from-win32-to-x64-platf

Windows下程序启动时出现0xc000007b错误的解决方案的更多相关文章

  1. windows下程序启动检查,只启动一个实例

    问题来源:http://bbs.csdn.net/topics/390998279?page=1#post-398983061 // Only_once.cpp : 定义控制台应用程序的入口点. // ...

  2. windows下编译Hugin时的template错误

    Hugin依赖于VIGRA,而VIGRA包含大量的模板,编译Hugin是出现如下的大量错误: "unexpected token(s) preceding ':'; skipping app ...

  3. IIS启动失败,启动Windows Process Activation Service时,出现错误13:数据无效 ;HTTP 错误 401.2 - Unauthorized 由于身份验证头无效,您无权查看此页

    因为修改过管理员账号的密码后重启服务器导致IIS无法启动,出现已下异常 1.解决:"启动Windows Process Activation Service时,出现错误13:数据无效&quo ...

  4. 当程序以Windows Services形式启动时当前路径不对

    当程序以Windows Services形式启动时当前路径不对 @(操作系统)[博客|dotNet] 很多时候我们需要将我们的程序写成利用Windows服务的形式来让它能够自启动.今天遇到一个问题,当 ...

  5. 在启动Windows Process Activation Service时,出现错误13:数据无效

    在启动Windows Process Activation Service时,出现错误13:数据无效 1.错误原因: 当Windows Process Activation Service从C:\Wi ...

  6. XAMPP 在windows下无法启动Apache解决方案

    XAMPP 在windows下无法启动Apache解决方案 一.现象 XAMPP 点击Start Apache时出现如下错误 20:41:12  [Apache] Error: Apache shut ...

  7. VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题)

    之前写的一个VC应用程序,是程序启动时就直接出现在任务栏, 窗体不出现,等用户点击任务栏图标再出现窗口.和一些防火墙什么的软件类似. 这种效果实现并不是很困难的,硬是找不到最好的.为什么呢? 首先,在 ...

  8. Windows下安装Eric5时出现的“Sorry, please install QtHelp.”问题解决办法

    解决Windows下安装Eric5时出现的“Sorry, please install QtHelp.”问题   PyQt4在Windows中使用了DirectX作为加速,不过,PyQt4没有使用最新 ...

  9. 如何在ASP.NET Core程序启动时运行异步任务(3)

    原文:Running async tasks on app startup in ASP.NET Core (Part 3) 作者:Andrew Lock 译者:Lamond Lu 之前我写了两篇有关 ...

随机推荐

  1. 另类的表单数据"序列化"

    背景:最近在做项目时,由于编辑页面需要提交的数据量有些多,而且在提交前还需要做一些逻辑处理,所以如果按照正常的方式,一个个的获取值然后拼接json对象传到后台的话相对工作量较大,而且容易出错,后期的维 ...

  2. 看看Maple T.A.的详细作用

    Maple T.A.是一个基于互联网的在线考试和智能评分系统,是Maplesoft公司 与美国数学协会(MAA)合作开发的成果,在全球拥有大量的院校用户.Maple T.A.提供了用户数据库.所见即所 ...

  3. PHP中Strict Standards错误解决方法二

    在PHP5.3.3 中安装wordpress 3.0.1 ,在安装时出现错误:Strict Standards: PHP Strict Standards: Declaration of Walker ...

  4. Android提权漏洞CVE-2014-7920&CVE-2014-7921分析

    没羽@阿里移动安全,更多安全类技术干货,请访问阿里聚安全博客 这是Android mediaserver的提权漏洞,利用CVE-2014-7920和CVE-2014-7921实现提权,从0权限提到me ...

  5. TDR测试原理

    什么是TDR? TDR是英文Time Domain Reflectometry 的缩写,中文名叫时域反射计,是测量传输线特性阻抗的主要工具.TDR主要由三部分构成:快沿信号发生器,采样示波器和探头系统 ...

  6. Security10:授予访问Object的权限

    1,将访问Object的权限授予Database Role 或 User 的语法如下 GRANT <permission> [ ,...n ] ON [ OBJECT :: ][ sche ...

  7. SSISDB4:Execution

    Execution是Package或Project的Execution Instance,每次执行都会生成一个唯一的ExecutionID,并记录Execution 执行的结果.在每次Executio ...

  8. 没有Hyper-V服务,WP Emulator无法启动

    解决: 打开管理工具

  9. JavaScript之糟粕

    0.导言 在上篇<JavaScript之毒瘤>中,列举了一些在JavaScript中难以避免的问题特性.本篇将会展示JavaScript中有问题的特性,但我们很容易就能便面它们.通过这些简 ...

  10. JS+CSS3实现带预览图幻灯片效果

    这个案例学习起来还有点吃力,目前还没有独自自己写出来过,贴出来以免忘记. 慕课网该课程原地址:http://www.imooc.com/learn/412 源码: <!DOCTYPE html& ...