至少我碰到了三个情况,都是AppCrash错误(以下都指VS2008的Release的设置)

第1个错误,报错模块是程序自己

我使用VS2008 Team with SP1和QT4.86编译程序,一直在本机上运行没什么问题,编译出的exe文件在别的机子上运行没问题(https发送有问题,但这是另外一回事)。后来VS2008 TEAM三个月试用期满,于是卸载掉换成ZWT的VS2008 PRO,打上补丁SP1。奇怪的是使用VS2008 PRO编译出来的程序会报AppCrash错误,程序登录界面都无法出来,莫名其妙之余也不想研究了,卸载PRO后重装TEAM,果然这个AppCrash错误消失了。但别的原因造成的AppCrash还在。

-------------------------------------------------------------------------------------

第2个错误,报错模块是ntdll.dll。后查明是由于VS2008项目属性没有设置好。

原来报错的原因是CRT库的错误选择,即Ingore Specific Library填写了msvcmrt.lib,Additional Dependencies 漏写了 libcmt.lib,导致虽然编译链接都通过,但执行有问题(登录没问题,使用外部库上传文件有问题)。 应该如下设置:

Linker的input页面,Additional Dependencies,应该设置为:
qtmain.lib QtCore4.lib QtGui4.lib QtXml4.lib QtNetwork4.lib msvcrt.lib (千万注意最后一项,不是msvcmrt.lib)
Ingore Specific Library应该设置为:
libcmt.lib (不是msvcrt.lib)

-------------------------------------------------------------------------------------

第3个错误,报错模块是程序自己(能出现登录框,但无法登陆,也无法从服务器获得XML应答,点击登录按钮后程序直接AppCrash了),且在安全网络模式下执行也是同样的错误。

问题签名:
问题事件名称: APPCRASH
应用程序名: bak61_AppCrash.exe
应用程序版本: 0.0.0.0
应用程序时间戳: 545c9b1b
故障模块名称: bak61_AppCrash.exe
故障模块版本: 0.0.0.0
故障模块时间戳: 545c9b1b
异常代码: c0000005
异常偏移: 000151bf
OS 版本: 6.1.7600.2.0.0.256.1
区域设置 ID: 2052
其他信息 1: 0a9e
其他信息 2: 0a9e372d3b4ad19135b953a78882e789
其他信息 3: 0a9e
其他信息 4: 0a9e372d3b4ad19135b953a78882e789

联机阅读隐私声明:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804

如果无法获取联机隐私声明,请脱机阅读我们的隐私声明:
C:\Windows\system32\zh-CN\erofflps.txt

最后原因找到了:我去掉登录框的进度条的时候,去掉了new,却照常使用:
//remember_label = new QProgressBar();
remember_label->setVisible(true);
但最奇怪的是,在我本机上(开发机子),无论是VS直接生成运行,还是拷贝到本机别处生成运行,都没有问题,但是拷贝到别的机子上立即歇菜。但是为什么本机没事呢,难道什么地方对内存访问设置的更宽松了(网上搜的答案:软件级别的解决方案是加入DEP例外列表,网上评论一片叫好,可是我的程序被拒绝加入到这个列表)?我的机子装了Delphi 2010/XE/XE5和VS2005/2008/2010/2012。哪位大大知道还请告知。

-------------------------------------------------------------------------------------

总结:三个错误,其中2个都是自己对VS设置和相关类库不熟悉造成的,光觉得VS Studio IDE好用,不知道真正做项目时VS的编译器连接器里一堆坑,这还没算C++编译设置,特别是Code Generation的设置,另外还有Character Set对QString和Char*之间的转换有什么影响仍未清楚。第三个错误是自己使用未实例化的变量,当然出错,但是在本机上运行怎么样都不出错,也是百思不得其解。

备注:三个问题都与qt的dll无关,一开始千小心万小心dll,根本就是走错方向了,奇怪怎么也不见网上的QT前辈讲讲我碰到的那些问题?

VS编译的QT程序发布时产生的AppCrash问题的更多相关文章

  1. 解决Qt程序发布时中文乱码问题(通过QApplication.addLibraryPath加载QTextCodec插件)

    Qt程序的文字编码,是通过插件来解决的,所以我们发布的时候需要把相应的插件也发布出去,在开发者电脑上程序会自动从插件目录加载到插件,但是如果发布给别的电脑使用,需要手动指定插件路径,如下所示: int ...

  2. VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

    下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip, 不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0 ...

  3. 亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)

    下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0- ...

  4. qt 程序发布

    Qt 程序发布步骤: 注意5.5 以后不再支持 WinXP 1) dll 抽取工具 windeployqt.exe 2) Windows脚本 实例: D:\Qt\Qt5.5.0\5.5\mingw49 ...

  5. 基于vs2005以上版本Qt程序发布的注意事项(讲了manifest的问题)

    最近发现了一个非常恼人的程序deployment的问题,估计大家有可能也会遇到,特此memo. 问题的出现我觉得主要还是微软搞的花头太多, 一个不知所谓的manifest文件让本来简单的程序发布变得困 ...

  6. .Net Core应用程序发布时不同方式的差别

    .Net Core的文档更新的真是快..每次看的时候都觉得之前是不是梦游看的...每次发布应用程序的时候都要翻看下文档..至少rid是死活记不住.还是留个RID的索引吧..还有发布的索引 ,这样就好复 ...

  7. Qt 程序发布以及打包成exe安装包

    一.简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno ...

  8. 使用VSCode 编译调试QT程序

    预备知识 bat文件,或者其他的脚本语法. qmake基本语法,qmake shadow build是啥. vscode 的task,lanch的配置. 前提 各个程序正确安装,即使用QtCreato ...

  9. Mac中QT程序发布

    基于Qt开发的应用程序进驻Mac App Store 最近摸索着将一个基于用Qt开发的App发布到Mac App Store,在网上查找相关资料的时候,发现很多文档都过期了,要有一些修改,所以想记录下 ...

随机推荐

  1. Ionic 2 Guide

    Ionic 2 Guide 最近一直没更新博客,业余时间都在翻译Ionic2的文档.之前本来是想写一个入门,后来觉得干脆把官方文档翻译一下算了,因为官方文档就是最好的入门教程.后来越翻译越觉得这个事情 ...

  2. ubuntu 13.04 163源(亲测可用)

    # deb cdrom:[Ubuntu )]/ trusty main restricted # See http://help.ubuntu.com/community/UpgradeNotes f ...

  3. 小组开发项目NABC分析

    我们团队的开发项目为:重量解锁 是根据重力感应实现手机的解锁方式,在传统滑屏的基础上我们想增添新的形式,实现用户用一组动作就能实现手机解锁功能,更加方便,炫酷. NABC模型 1.N:我们的创意在使用 ...

  4. 搭建SpringMVC+MyBatis开发框架四

    在src/main下面新建一个resouces文件夹,我们继续配置一些资源 1.新增applicationContext.xml:  <?xml version="1.0" ...

  5. Gentoo 网络接口配置文件说明

    裁剪的Gentoo系统,仅供公司内部使用! [作为备份档案] 网络接口配置:/etc/conf.d/net #设置静态IPconfig_eth0="192.168.1.x/24" ...

  6. navicat for mysql 注册码

    PremiumSoft Navicat for MySQL Enterprise Edition v8.0.27 姓名(Name):3ddown.com 组织(Organization):3ddown ...

  7. 01.JSP基础语法

        本章主要讲解Java Web与JSP的入门内容,适合有JSP或Java Web基础的读者学习. 1.Web应用与web.xml文件 (1)Java Web应用程序的结构     Java We ...

  8. 【CentOs】sudo使用

    在使用Linux系统过程中,通常情况下,我们都会使用普通用户进行日常操作,而root用户只有在权限分配及系统设置时才会使用,而root用户的密码也不可能公开.普通用户执行到系统程序时,需要临时提升权限 ...

  9. 【BZOJ】【2049】【SDOI2008】洞穴勘测 Cave

    LCT 哦……LCT的一道更水的裸题,适合学习access,link,cut等基本操作(其实这三个不是在一个层面上的?不要在意这些细节……) /**************************** ...

  10. Facebook

    Facebook登录为iOS Facebook的SDK为iOS提供了各种登录的经验,你的应用程序可以使用它来 ​​验证一个人.这份文件包括了所有你需要知道,以落实Facebook登录在你的iOS应用程 ...