WINCE 下配置 QT 的方法

1. 推荐安装环境 Windows XP SP3 + VS2005(SP1)
2. 载Qt for WinCE(eg. qt-everywhere-opensource-src-4.8.3.zip)
3. 解压到C:\Qt\4.8.3WinCE
4. 安装WinCE的SDK(如RNx,WinCE5.0的)
5. 将C:\Qt\4.8.3WinCE\bin加到环境变量Path中
6. 修改代码或配置(注1),否则编译可能会有错误,或者后面使用会有问题,不同的版本可能会有不同的错误
7. SDK编译设置
a. 到Qt解压目录下的mkspecs下,复制wince50standard-armv4i-msvc2005目录为wince50RNx-armv4i-msvc2005,
说明一下,win50是SDK是WinCE 5.0版本的,armv4i架构,msvc2005表示用vs2005编译。mkspecs下后很多已经配好的配置,
可根据自己的情况选最相似的一个
b. 进入wince50RNx-armv4i-msvc2005目录,更改qmake.conf中CE_SDK= RNx
8. 从开始菜单启动"Visual Studio 2005 Command Prompt"
9. cd到C:\Qt\4.8.3WinCE目录
10. 输入命令:configure -platform win32-msvc2005 -xplatform wince50RNx-armv4i-msvc2005
如果不用webkit,在后面加上-no-webkit,其他的组件类似,具体参看configure -help
11. 回车后开始配置Qt,license选择o,之后选择y
几分钟后配置成功,在C:\Qt\4.8.3WinCE\bin目录下,会生成qmake.exe、checksdk.exe等文件
12. 运行checksdk -list,查看已安装的sdk,可以看到如"RNx (ARMV4I)"的SDK
13. 运行checksdk -sdk "RNx (ARMV4I)" -script "setrnxsdk.bat"
-sdk后面是设置需要编辑的sdk(根据自己需要填写,但必须在上面list的列表里)
-script后面的要生成bat的名字,因为我们在C:\Qt\4.8.3WinCE目录下,运行此命令,这个文件也生成在这个目录下
上面参数具体说明参见 checksdk -help
14. 运行 setrnxsdk.bat
此文件时第13步自己设置的
15 运行nmake
数小时后,编译成功
注1:
4.8.2版本webkit的问题

       platform\DefaultLocalizationStrategy.cpp(327) : error C2001: newline in constant
       platform\DefaultLocalizationStrategy.cpp(327) : fatal error C1057: unexpected end of file in macro expansion

这个错误的原因是因为代码里面的非英文的引号造成的。

       原始的错误代码如下:

       return WEB_UI_STRING("Look Up “<selection>”", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));

       注意 <selection> 单词前后的引号。就是它造成编译报错。修改成下面的代码

       return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));

 

      注2:如nmake出现错误,一般重新nmake即可。但如果vs2005安装有问题,需修复vs2005. 我在编译过程中就出现了此情况,nmake总是错误,修复后就OK了。

 

 

1.操作系统:win7

2.wince上的Qt库版本:qt-everywhere-opensource-src-4.7.3.zip

3.Wince6.0

4.Vs2005

5.qt在windows下面的sdk:qt-sdk-win-opensource-2010.05.exe或者qt-win-opensource-4.7.3-vs2008.exe

6.Qt在vs上的插件:qt-vs-addin-1.1.9

 

 

首先安装vs2005及各个补丁:

安装顺序:

1.      vs2005

2.      Visual Studio 2005 Service Pack1

3.      Visual Studio 2005 Service Pack1 Update for Windows Vista

4.      Visual Studio 2005 Service Pack1 ATL Security Update

 

这一步安装遇到的问题:

Vs2005我第一次下载的是英文试用版,安装的时候显示内存不足的错误(明明还有2G空间),于是重新下了个中文版vs2005,安装成功.相应的补丁也要下中文版的

 

 

安装wince6.0及补丁:

安装顺序:

1.      wince6.0

2.      Windows Embedded CE 6.0Platform Builder Service Pack 1

3.      Windows Embedded CE 6.0 R2

4.      Windows Embedded CE 6.0 R3

5.      安装sdk,我用的是友善之臂公司提供的Mini6410-CE6-SDK

 

安装qt for wince库:qt-everywhere-opensource-src-4.7.3.zip

我第一次下载的是最新版的qt库: qt-everywhere-opensource-src-4.7.4.zip,然后再nmake的阶段总是出现问题:

Creatinglibrary ..\..\lib\QtGuid4.lib and object ..\..\lib\QtGuid4.exp
pngwrite.obj : error LNK2019: unresolved externalsymbol gmtime referenced in function png_convert_from_time_t
..\..\lib\QtGuid4.dll : fatal error LNK1120: 1unresolved externals

在国外论坛上发现一个解决方法:

注释掉qt源代码:/src/3rdparty/libpng/pnglibconf.h中的一句话:

#definePNG_CONVERT_tIME_SUPPORTED

然后重新配置configure即可.

因为据说4.7.4还有其他一些问题,所以我干脆下载了4.7.3来使用.

安装顺序:

1.      解压qt-everywhere-opensource-src-4.7.4.zip到e:盘下qt_wince文件夹

2.      增加环境变量e:\qt_wince\bin

3.      修改E:\qt_wince\mkspecs\wince60standard-armv4i-msvc2005中的qmake.conf文件中的CE_SDK                  = Mini6410-CE6-SDK   # replace with actual SDK name

4.      打开vs2005,打开工具->visual studio 2005 command prompt

5.      输入命令:configure -platform win32-msvc2005 -xplatformwince60standard-armv4i-msvc2005.这一步是配置qt库,配置需要几分钟,配置成功会在qt_wince/bin下面生成一些列工具.可以用checksdk.exe –list查看当前装的sdk版本.

6.      输入命令: set INCLUDE=E:\Microsoft Visual Studio 8\VC\ce\include;E:\WindowsCE Tools\wce600\Mini6410-CE6-SDK\Include\Armv4i

7.      输入命令: set LIB=E:\Microsoft Visual Studio 8\VC\ce\lib\armv4i;E:\WindowsCE Tools\wce600\Mini6410-CE6-SDK\Lib\ARMV4I

8.      输入命令: set PATH=E:\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%PATH%

9.      输入命令nmake,这一步需要几个小时(跑了一夜,早上起床编译成功)

到这一步qt库以及编译完毕.

 

安装qt在windows下面的sdk:qt-sdk-win-opensource-2010.05.exe

安装好后,qt默认是mingw编译的,所以需要用nmake重编译

1.打开vs2005,打开工具->visual studio 2005 command prompt

2.进入指定目录下:cd E:\Qt\2010.05\qt

3.编译:configure -debug-and-release -platform win32-msvc2005

4.编译完成后nmake,大概8个小时后就好了吧(我的笔记本时间)

nmake前注意:

以下是一个网友遇到的,我不幸也遇到了- -!,所以先删除那4个文件先

原链接:http://hi.baidu.com/316194566/blog/item/3452c0dce2650db4cd11668e.html

 

 

在编译QT代码时,会遇到一些问题,我遇到了两个问题。
然后继续编译N久之后,又出现了问题。。。


编译大概1个小时之后,出现:

01.api\qscriptextensionplugin.h(43): Error: Undefined interface  
02.NMAKE : fatal error U1077: 'C:\Qt\2009.05\qt\bin\moc.exe' : return code '0x1'  
03.Stop.   
04.NMAKE : fatal error U1077: '"d:\Program Files\Microsoft Visual Studio 9.0\VC\BIN   
05.\nmake.exe"' : return code '0x2'   
06.Stop.   
07.NMAKE : fatal error U1077: 'cd' : return code '0x2'  
08.Stop.  
api\qscriptextensionplugin.h(43): Error: Undefined interface
NMAKE : fatal error U1077: 'C:\Qt\2009.05\qt\bin\moc.exe' : return code '0x1'
Stop.
NMAKE : fatal error U1077: '"d:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

以上是出错代码,解决方法是将

qt/src/script/tmp/moc/debug_shared/mocinclude.tmp
qt/src/script/tmp/moc/release_shared/mocinclude.tmp

删除,然后继续编译。

过了很长时间之后,在编译webkit部分的代码时,会发生错误,系统会停止编译
D:\tools\Qt\2010.05\qt\src\3rdparty\webkit\WebCore\tmp\moc\debug_shared\moc_Sock
etStreamHandlePrivate.cpp(97) : error C2065: “QSslError”: 未声明的标识符
D:\tools\Qt\2010.05\qt\src\3rdparty\webkit\WebCore\tmp\moc\debug_shared\moc_Sock
etStreamHandlePrivate.cpp(97) : error C3861: “socketSslErrors”: 找不到标识符
正在生成代码...
NMAKE : fatal error U1077: “"D:\tools\Microsoft Visual Studio 10.0\VC\BIN\cl.EX
E"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “"D:\tools\Microsoft Visual Studio 10.0\VC\BIN\nmake
.exe"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “cd”: 返回代码“0x2”
Stop.

解决方法是将

qt\src\3rdparty\webkit\WebCore\tmp\moc\debug_shared\mocinclude.tmp 
qt\src\3rdparty\webkit\WebCore\tmp\moc\release_shared\mocinclude.tmp
删除之后可以继续编译(重新执行nmake命令)

编译好后,wince上的qt库就编译成功了,可以打开qt下demo工程编译测试.

QT已经有编译好的VS库,可以直接安装qt-win-opensource-4.7.3-vs2008.exe而不必经历上面这步的过程!!!

 

安装Qt在vs上的插件:qt-vs-addin-1.1.9

没什么好说的,安装好后在vs上出现qt的插件图标

这个时候启动Qt->Launch Designer失败,显示错误:QT in the given path was built using minGW

恩,这个已经是最后一个问题了,解决方法:

原链接:http://dangflying.blog.163.com/blog/static/8693721820116298035/

1.修改注册表:
HKEY_CURRENT_USER\Software\Trolltech\Versions\
下增加一个子项
qt201005(需要的名称)
子项下面增加一个数值 InstallDir,值就是你要配置的Qt路径
2.删除文件
删除qi的lib目录下的
libqtmain.a and libqtmaind.a 两个文件。

 

好了,大功告成,环境配置成功!

接下来可以把qt编译的程序部署到wince板子上进行测试,

将exe文件拷入想要的目录,然后拷贝几个库文件进去:

QtCore4.dll,QtGui4.dll,QtCored4.dll,QtGuid4.dllmsvcr90d.dll

前两个release版本,后两个是debug版本文件.

转载于:https://www.cnblogs.com/zd_ad/archive/2012/11/06/2756554.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AQS基本原理

什么是AQS&#xff1f; AQS即AbstractQueuedSynchronizer,是一个用于构建锁和同步器的框架。它能降低构建锁和同步器的工作量&#xff0c;还可以避免处理多个位置上发生的竞争问题。在基于AQS构建的同步器中&#xff0c;只可能在一个时刻发生阻塞&#xff0c;从而降低上下文切…

C语言 int** 二重指针的理解

#include <stdio.h> #include <stdlib.h>/*&根据值找地址*根据地址找值 */ f(int** q){//传入的是指针的地址 int i 3; printf("子函数 i的地址 %#X\n",&i); // *q 代表的就是p变量 *q &i; //*q指向是p的值 也就是…

ReentrantReadWriteLock源码分析

概述 ReentrantReadWriteLock维护了一对相关的锁&#xff0c;它们分别是共享readLock和独占writeLock。关于共享读锁和排他写锁的概念其实很好理解。所谓共享读锁就是一个线程读的时候&#xff0c;其它线程也可以来读&#xff08;共享&#xff09;&#xff0c;但是不能来写。排…

@Autowired、@Qualifier、@Resource的区别

参考博文&#xff1a; http://www.cnblogs.com/happyyang/articles/3553687.html http://blog.csdn.net/revent/article/details/49203619 http://blog.csdn.net/ad921012/article/details/49679745 spring不但支持自己定义的Autowired注解&#xff0c;还支持几个由JSR-250…

UINavigationViewController的backBarButtonItem设置技巧

之前大家是否疑惑为什么设置了类似这样的代码 UIBarButtonItem *backButton [[UIBarButtonItem alloc] initWithTitle:"返回" …

MySQL行锁和表锁的含义及区别

今天在开发测试时候出现了锁表&#xff0c;原因是因为我在本地开启了事务&#xff0c;代码中打了断点&#xff0c;然后测试同学测试时候出现了锁表&#xff0c;我去排查了问题&#xff0c;然后找到相关的资料了解下&#xff0c; 总结&#xff1a;原因的表没有加索引&#xff0…

Thinking In Design Pattern——Query Object模式

什么是Query Object模式 Query Object的架构设计 Query Object在服务层的应用 测试 Query Object模式 Query Object&#xff1a;可以在领域服务层构造查询然后传给资源库使用&#xff0c;并使用某种查询翻译器将对象查询&#xff08;Query&#xff09;翻译成底层数据库持久化…

linux gcc编译C程序 分享

一个c语言程序从源文件到生成可执行文件&#xff0c;编译器需要共经历4个步骤&#xff1a;1) 预处理&#xff1a;把c文件中预处理命令扫描处理完毕&#xff0c;即对源代码文件中的文件包含(#include)、预编译语句(如宏定义#define等)进行分析&#xff0c;此时生成的文件仍然是可…

java Arrays.copyOfRange使用方法

使用场景&#xff1a;比如当一个文本框输入多个值作为查询条件&#xff0c;这时候当输入的值过多&#xff0c;我们需要最大支持多少个&#xff1f;这时候&#xff0c;输入超出个数的值&#xff0c;就被截取不要 不然后台处理逻辑就要飞前台返回不能查询这样的提示&#xff0c;…

WinForm 中 comboBox控件之数据绑定

http://www.cnblogs.com/peterzb/archive/2009/05/30/1491923.html 下面介绍三种对comboBox绑定的方式&#xff0c;分别是泛型中IList和Dictionary&#xff0c;还有数据集DataTable 一、IList 现在我们直接创建一个List集合&#xff0c;然后绑定 View Code IList<string>…

MySQL常用引擎有MyISAM和InnoDB区别

MySQL常用引擎有MyISAM和InnoDB&#xff0c;而InnoDB是mysql默认的引擎。MyISAM不支持行锁&#xff0c;而InnoDB支持行锁和表锁。 如何加锁&#xff1f; MyISAM在执行查询语句&#xff08;SELECT&#xff09;前&#xff0c;会自动给涉及的所有表加读锁&#xff0c;在执行更新…

java中异常与return

抽时间整理了下java中异常与return&#xff0c;以前这块总是弄混淆&#xff0c;觉得还是写下来慢慢整理比较好。由于水平有限&#xff0c;仅供参考。废话不多说&#xff0c;直接上代码。 下面是两个方法&#xff1a; 1 public static int throwReturn(){2 int ret…

rocketmq 启动mqbroker.cmd闪退

非常奇怪&#xff0c;broker启动闪退&#xff0c;我就摸索了好久&#xff0c;网上各种百度&#xff0c;最后得到正解 将c盘下这个store下的文件全部删除&#xff0c;就可以启动了 猜测是可能mq非正常关闭&#xff0c;导致&#xff0c;具体懂原理的大佬可以来评论区说说

星星计算器

星星计算器&#xff1a; [ 机锋下载 ]第一款&#xff0c;呃&#xff0c;…&#xff0c;自家学习安卓的时候产的&#xff0c;功能和第二款有些类似&#xff08;而且在细节功能方面我也做了很多努力&#xff09;&#xff0c;不过已经十分强大了&#xff0c;并且有自己的创新&…

java基础复习-(run方法和start方法区别)

1&#xff0c;run方法是Runnable接口中定义的&#xff0c;start方法是Thread类定义的。 所有实现Runnable的接口的类都需要重写run方法&#xff0c;run方法是线程默认要执行的方法&#xff0c;是绑定操作系统的&#xff0c;也是线程执行的入口。 start方法是Thread类的默认执行…

Web.py Cookbook 简体中文版 - 如何使用web.background

注意&#xff01;&#xff01; web.backgrounder已转移到web.py 3.X实验版本中&#xff0c;不再是发行版中的一部分。你可以在这里下载&#xff0c;要把它与application.py放置在同一目录下才能正运行。 介绍 web.background和web.backgrounder都是python装饰器&#xff0c;它可…

为什么wait, notify,notifyAll保存在Object类中,而不是Thread类

一个较难回答的 Java 问题&#xff0c; Java 编程语言又不是你设计的&#xff0c;你如何回答这个问题呢&#xff1f; 需要对 Java 编程的常识进行深入了解才行。 这个问题的好在它能反映面试者是否对 wait - notify 机制有没有了解, 以及他相关知识的理解是否明确。就像为什么…

Springboot集成MapperFactory(ma.glasnost.orika.MapperFactory)类属性复制

导入jar <dependency><groupId>ma.glasnost.orika</groupId><artifactId>orika-core</artifactId><version>1.5.2</version></dependency> 编写容器注入的类 package com.kingboy.springboot.config;import ma.glasnost.or…

WPF之布局

此文目的旨在让人快速了解&#xff0c;没有什么深度&#xff0c;如需深入了解布局&#xff0c;请参考msdn。 如果你要把WPF当winform使用&#xff0c;拖拖控件也无不可&#xff0c;不过建议还是不要拖的好。 本文将那些用的比较多的几个布局控件&#xff08;Grid、UniformGrid、…

@Size、@Max、@Min、@Length、注解的含义和区别

Min 验证 Number 和 String 对象是否大等于指定的值Max 验证 Number 和 String 对象是否小等于指定的值Size(min, max) 验证对象&#xff08;Array,Collection,Map,String&#xff09;长度是否在给定的范围之内Length(min, max) 验证字符串长度是否在给定的范围之内区别&#x…