VS编译的QT程序发布时产生的AppCrash问题
至少我碰到了三个情况,都是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问题的更多相关文章
- 解决Qt程序发布时中文乱码问题(通过QApplication.addLibraryPath加载QTextCodec插件)
Qt程序的文字编码,是通过插件来解决的,所以我们发布的时候需要把相应的插件也发布出去,在开发者电脑上程序会自动从插件目录加载到插件,但是如果发布给别的电脑使用,需要手动指定插件路径,如下所示: int ...
- VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序
下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip, 不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0 ...
- 亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)
下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0- ...
- qt 程序发布
Qt 程序发布步骤: 注意5.5 以后不再支持 WinXP 1) dll 抽取工具 windeployqt.exe 2) Windows脚本 实例: D:\Qt\Qt5.5.0\5.5\mingw49 ...
- 基于vs2005以上版本Qt程序发布的注意事项(讲了manifest的问题)
最近发现了一个非常恼人的程序deployment的问题,估计大家有可能也会遇到,特此memo. 问题的出现我觉得主要还是微软搞的花头太多, 一个不知所谓的manifest文件让本来简单的程序发布变得困 ...
- .Net Core应用程序发布时不同方式的差别
.Net Core的文档更新的真是快..每次看的时候都觉得之前是不是梦游看的...每次发布应用程序的时候都要翻看下文档..至少rid是死活记不住.还是留个RID的索引吧..还有发布的索引 ,这样就好复 ...
- Qt 程序发布以及打包成exe安装包
一.简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno ...
- 使用VSCode 编译调试QT程序
预备知识 bat文件,或者其他的脚本语法. qmake基本语法,qmake shadow build是啥. vscode 的task,lanch的配置. 前提 各个程序正确安装,即使用QtCreato ...
- Mac中QT程序发布
基于Qt开发的应用程序进驻Mac App Store 最近摸索着将一个基于用Qt开发的App发布到Mac App Store,在网上查找相关资料的时候,发现很多文档都过期了,要有一些修改,所以想记录下 ...
随机推荐
- Ionic 2 Guide
Ionic 2 Guide 最近一直没更新博客,业余时间都在翻译Ionic2的文档.之前本来是想写一个入门,后来觉得干脆把官方文档翻译一下算了,因为官方文档就是最好的入门教程.后来越翻译越觉得这个事情 ...
- ubuntu 13.04 163源(亲测可用)
# deb cdrom:[Ubuntu )]/ trusty main restricted # See http://help.ubuntu.com/community/UpgradeNotes f ...
- 小组开发项目NABC分析
我们团队的开发项目为:重量解锁 是根据重力感应实现手机的解锁方式,在传统滑屏的基础上我们想增添新的形式,实现用户用一组动作就能实现手机解锁功能,更加方便,炫酷. NABC模型 1.N:我们的创意在使用 ...
- 搭建SpringMVC+MyBatis开发框架四
在src/main下面新建一个resouces文件夹,我们继续配置一些资源 1.新增applicationContext.xml:  <?xml version="1.0" ...
- Gentoo 网络接口配置文件说明
裁剪的Gentoo系统,仅供公司内部使用! [作为备份档案] 网络接口配置:/etc/conf.d/net #设置静态IPconfig_eth0="192.168.1.x/24" ...
- navicat for mysql 注册码
PremiumSoft Navicat for MySQL Enterprise Edition v8.0.27 姓名(Name):3ddown.com 组织(Organization):3ddown ...
- 01.JSP基础语法
本章主要讲解Java Web与JSP的入门内容,适合有JSP或Java Web基础的读者学习. 1.Web应用与web.xml文件 (1)Java Web应用程序的结构 Java We ...
- 【CentOs】sudo使用
在使用Linux系统过程中,通常情况下,我们都会使用普通用户进行日常操作,而root用户只有在权限分配及系统设置时才会使用,而root用户的密码也不可能公开.普通用户执行到系统程序时,需要临时提升权限 ...
- 【BZOJ】【2049】【SDOI2008】洞穴勘测 Cave
LCT 哦……LCT的一道更水的裸题,适合学习access,link,cut等基本操作(其实这三个不是在一个层面上的?不要在意这些细节……) /**************************** ...
- Facebook
Facebook登录为iOS Facebook的SDK为iOS提供了各种登录的经验,你的应用程序可以使用它来 验证一个人.这份文件包括了所有你需要知道,以落实Facebook登录在你的iOS应用程 ...