以前自己也尝试过在搭建Windows XP下搭建Symbian S60v5系统的编程环境。(那一次也是花了不少气力~~~)怎么说呢,其繁琐的安装过程,缓慢的模拟器,十分不熟悉的IDE环境,都让人很不舒服。于是我很快投入了Qt的怀抱。Nokia Qt SDK的安装就相对方便很多,编译器运行也快。用Qt Creator的确是能很快上手开发出自己想要的小东西:)不过它也有美中不足的地方——不是所有安装S60v5系统的手机都配备有Qt运行库的。应该只有Symbian^3系统是自带有Qt库,别的系统都需要安装。这可麻烦了,一个Qt库十几MB,安装下去,把手机存储空间占用了不少。。。本来空间就不够。为了一个小程序这么大费周章实在是不值得。另外,由于很多手机没有内置Qt库,这就使得用Qt编写的程序的适用性很窄。(这也不能怪用户,那个库实在太庞大了)思来想去,别人都用Symbian C++都开发出那么多程序了,怎么就这么难呢!于是自己想再试试。

上一篇:S60v5 编程环境的搭建

==================================================================================================================================

上次由于下载软件时没有注意版本问题,使得模拟器出现各种问题,这次小心了。特地按照书里说的下了推荐版本的软件:

1.Active Perl 5.6.1 这个旧版本貌似不好找,不过网上还是找得到的。网上有人说高版本也可以,不怕麻烦的人就试试吧,这次我是小心了:)我下载的文件是ActivePerl-5.6.1.628-MSWin32-x86-multi-thread.msi 参考下载地址:http://download.csdn.net/download/olinwen/546673

2.Java SE 1.5 这个在oracle的网站上仔细找还找得到。我下载的是Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32c),安装文件是j2sdk-1_5_0-beta-windows-i586.exe 参考下载地址:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase5-419410.html

3.Symbian SDKs 既然自己的手机是S60 5th Edtion的体统,当然选S60 5th Edition的SDK。安装文件是S60_5th_Edition_SDK_v1_0_en。参考下载地址:http://www.developer.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html

4.Carbide.c++ 2.7 我用的是2.7版的,在官网上可以下得到。现在好像3.2版已经出来了。看了下官网的介绍,说是3.2版本不再支持S60 3rd Edition的开发,所以我还是选了旧版本。安装文件是Carbide_cpp_v2_7_en.exe 参考下载地址:http://www.developer.nokia.com/info/sw.nokia.com/id/dbb8841d-832c-43a6-be13-f78119a2b4cb.html

下载好后开始安装:

注意:最好将以上4个软件装在同一盘符下,像我就全装在了G:\S60\目录下。不要问为什么全都要装在同一盘符下了,我知道有人说Active Perl和Java SE可以随便装,不过为了方便管理,省事儿,最主要的是安装过程错误少,还是全都安装在一起吧!经过我实验,在不在C:盘倒是无所谓,以后操作的时候注意点就行了。比如在运行模拟器时:由于我装在了G盘,而cmd默认情况下是C盘,因此要先输入G: 回车进入G盘,再执行epoc命令打开模拟器。

我的目录分配方式如下:

ActivePerl--------------------G:\S60\perl_5_6\

Java SE JDK 1.5-----------G:\S60\java_1_5\

S60_5th_Edition_SDK---G:\S60\devices\S60_5th_Edition_SDK_v1.0\

CSL_Arm_Toolchain-----G:\S60\CSL_Arm_Toolchain\

Carbide.c++-----------------G:\S60\Carbide_cpp_v2_7\

1.安装Active Prel 5.6.1

不多说,除了设置安装路径外一路“Next”搞定。记住安装时选择自动更新环境变量。可能是我装了安全防护软件的原因,即便选了这一项,系统环境变量也没有变。无奈只有自己添加:我的电脑(右键)---属性---高级---环境变量---系统变量---编辑Path---在其中添加“G:\S60\perl_5_6\bin\”(不包括双引号)

测试:重新运行cmd

G:\>perl -version

This is perl, v5.6.1 built for MSWin32-x86-multi-thread
                (with 1 registered patch, see perl -V for more detail)

Copyright 1987-2001, Larry Wall

Binary build 628 provided by ActiveState Tool Corp. http://www.ActiveState.com
                Built 15:41:05 Jul  4 2001
                                ……

看到以上内容证明已经设置正确。

2.安装Java SE JDK 1.5

基本也是除了设置路径外就是一直"Next"了。当然,环境变量估计也是没有自动设置成功的,还得自己动手:

(1)我的电脑(右键)---属性---高级---环境变量---系统变量

(2)在系统变量中新建CLASSPATH,在其中添加".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar"(不包括双引号,且开头有个.;号。后面不再重复,各位自己细心)

(3)在系统变量中新建JAVA_HOME,在其中添加"G:\S60\java_1_5"(根据自己的实际目录,自己修改哈)

(4)在系统变量Path中添加"%JAVA_HOME%\bin"

        测试:重新运行cmd

G:\>java -version

java version "1.5.0-beta"
                Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b32c)
                Java HotSpot(TM) Client VM (build 1.5.0-beta-b32c, mixed mode)

G:\>javac -version

javac 1.5.0-beta
                javac: no source files
                Usage: javac <options> <source files>

……

看到以上内容证明已设置正确。

3.安装Symbian SDK S60 5th Edtion

这个选择好目录后,小心安装。最好还是细细研究下安装下的S60 5th Edition SDK Installation Guide.pdf再安装。当然,就算研究过了,也不一定能顺利装完。。。安装过程中会提示你是否安装CSL_Arm_Toolchain,选择是。如果你安装一路都很顺,直到结束。那么恭喜,你只剩环境变量的配置环节了!

我将要新增或编辑的变量名和其中的值列在这里(我是安装在G:\S60\devices\S60_5th_Edition_SDK_v1.0\下的):

(1)EPOCROOT---\S60\devices\S60_5th_Edition_SDK_v1.0\

(2)Path--------------\epoc32\tools;\epoc32\gcc\bin;G:\S60\CSL_Arm_Toolchain\bin

(3)Path--------------C:\Program Files\Common Files\Symbian\tools(这个我忘了是在安装完Symbian SDK S60 5th Edtion出现的,还是在安装完Carbide.c++后出现的。总之如果后面的测试有问题,就把对照这些添加吧。)

测试:

1)找到Symbian SDK S60 5th Edtion的安装目录,进入其S60CppExamples文件夹,如G:\S60\devices\S60_5th_Edition_SDK_v1.0\S60CppExamples。将其中的helloworldbasic文件夹复制到自建的工作目录下,如G:\S60\workspace。(注意要在同一盘符下)。重新打开cmd。

G:\S60\workspace\helloworldbasic\group>devices


S60_5th_Edition_SDK_v1.0:com.nokia.s60 - default

(如果S60_5th_Edition_SDK_v1.0:com.nokia.s60不是default,用命令devices -setdefault S60_5th_Edition_SDK_v1.0:com.nokia.s60将其设为默认)

2)

G:\S60\workspace\helloworldbasic\group>bldmake bldfiles

这时G:\S60\workspace\helloworldbasic\group中会生成一个ABLD.BAT文件,G:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\BUILD\中会新建目录结构\workspace\helloworldbasic\group里面有各种文件

3)

G:\S60\workspace\helloworldbasic\group>abld build winscw udeb(如果系统环境没有配置好,这里可能出现"……Nothing to do"的错误提示。可以重新配置下系统变量,如果不行,重装下CSL Arm Toolchain,再重新配置。我就是这么解决"……Nothing to do"问题的。)
make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\EXPORT.make" EXPORT VERBOSE=-s
Nothing to do
make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" MAKEFILE VERBOSE=-s
 make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW MAKMAKE
perl -S makmake.pl  -D \S60\workspace\helloworldbasic\group\HELLOWORLDBASIC WINS
CW
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" LIBRARY VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW LIB
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\WINSCW\HELLOWORLDBASIC.WINSCW" LIBRARY
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" RESOURCE CFG=UDEB VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW CFG=UDEB RESOURCE
MifConv version 1.11 build (50, SVG stand-alone).
Checking: ..\gfx\qgn_menu_helloworldbasic.svg
Choosing...
Used from: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\tools\SVGTBINENCODE.exe.

Convert files...
.
Loading mif icons...
Loading file: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\BUILD\s60\icons\temp\
s36s.tmp\.._gfx_qgn_menu_helloworldbasic.svgb
Writing mif: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\WINSCW\UDEB\Z\
resource\apps\helloworldbasic_aif.mif
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\WINSCW\HELLOWORLDBASIC.WINSCW" RESOURCEUD
EB
Creating \s60\devices\s60_5th_edition_sdk_v1.0\epoc32\build\s60\workspace\hellow
orldbasic\group\helloworldbasic\winscw\udeb
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" TARGET CFG=UDEB VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW CFG=UDEB BLD
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\WINSCW\HELLOWORLDBASIC.WINSCW" UDEB
HelloWorldBasic.cpp
HelloWorldBasicApplication.cpp
HelloWorldBasicAppView.cpp
HelloWorldBasicAppUi.cpp
HelloWorldBasicDocument.cpp
HelloWorldBasicQueryDialog.cpp
HelloWorldBasic.UID.CPP
mwldsym2.exe: warning: Multiply defined symbol: ___get_MSL_init_count in
mwldsym2.exe: warning: files uc_cwhelp.obj (EEXE.LIB), startup.win32.c.obj (msl_
all_static_mse_symbian_d.lib),
mwldsym2.exe: warning: keeping definition in startup.win32.c.obj
mwldsym2.exe: warning: Multiply defined symbol: __CleanUpMSL in
mwldsym2.exe: warning: files uc_cwhelp.obj (EEXE.LIB), startup.win32.c.obj (msl_
all_static_mse_symbian_d.lib),
mwldsym2.exe: warning: keeping definition in startup.win32.c.obj
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\WINSCW.make" FINAL CFG=UDEB VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\WINSCW TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLA
TFORM=WINSCW CFG=UDEB FINAL

这时G:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\winscw\udeb中会出现文件HelloWorldBasic.exe

4)

G:\S60\workspace\helloworldbasic\group>epoc

启动模拟器,漫长的等待。。。进入其Menu---applications---HelloWorld运行试试!如果成功了证明你已经可以编译并正常运行模拟器了。(这里再次提醒大家注意,S60v5的模拟器不支持长文件名的系统Temp,或者是因为系统默认的Temp在C盘的缘故,模拟器不支持而无法打开或开一下就关了。我将用户变量中的Temp和Tmp变量全改为G:\Temp后,模拟器终于正常打开了。这么麻烦为何一直都不更新。。。)

5)

G:\S60\workspace\helloworldbasic\group>abld build gcce urel


make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\EXPORT.make" EXPORT VERBOSE=-s
Nothing to do
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" MAKEFILE VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE MAKMAKE
perl -S makmake.pl  -D \S60\workspace\helloworldbasic\group\HELLOWORLDBASIC GCCE

make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" LIBRARY VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE LIB
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\GCCE\HELLOWORLDBASIC.GCCE" LIBRARY
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" RESOURCE CFG=UREL VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE CFG=UREL RESOURCE
MifConv version 1.11 build (50, SVG stand-alone).
Checking: ..\gfx\qgn_menu_helloworldbasic.svg
Choosing...
Used from: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\tools\SVGTBINENCODE.exe.

Convert files...
.
Loading mif icons...
Loading file: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\BUILD\s60\icons\temp\
s174.tmp\.._gfx_qgn_menu_helloworldbasic.svgb
Writing mif: \S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\data\z\resource\apps\h
elloworldbasic_aif.mif
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\GCCE\HELLOWORLDBASIC.GCCE" RESOURCEUREL
Creating \s60\devices\s60_5th_edition_sdk_v1.0\epoc32\build\s60\workspace\hellow
orldbasic\group\helloworldbasic\gcce\urel
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" TARGET CFG=UREL VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE CFG=UREL BLD
make -s  -r -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace
\helloworldbasic\group\HELLOWORLDBASIC\GCCE\HELLOWORLDBASIC.GCCE" UREL
helloworldbasic.cpp
helloworldbasicapplication.cpp
helloworldbasicappview.cpp
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikme
nub.h:18,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknen
v.h:28,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknut
ils.h:40,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicappview.
cpp:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h: In member funct
ion `TBool CEikMenuPaneItem::IsScaleableText(const TDesC&) const':
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h:242: warning: en
umeral mismatch in conditional expression: `TFalse' vs `TTrue'
helloworldbasicappui.cpp
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknno
tewrappers.h:27,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/AknNoteDialog.h:660:15: war
ning: no newline at end of file
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklb
x.h:39,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/AknQu
eryDialog.h:25,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknno
tewrappers.h:28,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklbed.h:256:16: warning:
no newline at end of file
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikme
nub.h:18,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknen
v.h:28,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknut
ils.h:40,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknpo
puplayout.h:26,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/AknQu
eryDialog.h:28,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknno
tewrappers.h:28,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:18:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h: In member funct
ion `TBool CEikMenuPaneItem::IsScaleableText(const TDesC&) const':
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h:242: warning: en
umeral mismatch in conditional expression: `TFalse' vs `TTrue'
In file included from /S60/workspace/helloworldbasic/src/helloworldbasicappui.cp
p:27:
/S60/workspace/helloworldbasic/inc/HelloWorldBasic.hrh:27:34: warning: no newlin
e at end of file
helloworldbasicdocument.cpp
helloworldbasicquerydialog.cpp
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklb
x.h:39,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknqu
erydialog.h:25,
                 from /S60/workspace/helloworldbasic/inc/HelloWorldBasicQueryDia
log.h:21,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicquerydia
log.cpp:19:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eiklbed.h:256:16: warning:
no newline at end of file
In file included from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikme
nub.h:18,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknen
v.h:28,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknut
ils.h:40,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknpo
puplayout.h:26,
                 from /S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/aknqu
erydialog.h:28,
                 from /S60/workspace/helloworldbasic/inc/HelloWorldBasicQueryDia
log.h:21,
                 from /S60/workspace/helloworldbasic/src/helloworldbasicquerydia
log.cpp:19:
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h: In member funct
ion `TBool CEikMenuPaneItem::IsScaleableText(const TDesC&) const':
/S60/devices/S60_5th_Edition_SDK_v1.0/epoc32/include/eikmenup.h:242: warning: en
umeral mismatch in conditional expression: `TFalse' vs `TTrue'
  make -r  -f "\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\S60\workspace\
helloworldbasic\group\GCCE.make" FINAL CFG=UREL VERBOSE=-s
make -s  -C \S60\workspace\helloworldbasic\group -f "ICONS_SCALABLE_DC.MK" TO_RO
OT=..\..\..\.. EPOCBLD=\S60\devices\S60_5th_Edition_SDK_v1.0\EPOC32\BUILD\ICONS_
SCALABLE_DC\GCCE TO_BLDINF=..\..\..\..\S60\workspace\helloworldbasic\group PLATF
ORM=GCCE CFG=UREL FINAL

经过一长串的编译,如果没有报错,那么程序正确。在G:\S60\devices\S60_5th_Edition_SDK_v1.0\epoc32\release\gcce\urel下会生成又GCCE编译的Release版的exe文件HelloWorldBasic.exe

6)

接着进入G:\S60\workspace\helloworldbasic\sis目录。在里面有一个helloworldbasic_gcce.pkg文件。打开发现里面其实是个模板,目录全都指定有问题。因此要先修改才能用。

这里给出我修改的一个版本(最好使用Unicode编码):

;Language - standard language definitions
&EN
; standard SIS file header
#{"HelloWorldBasic"},(0xA000017F),1,0,0
;Localised Vendor name
%{"Vendor"}
;Unique Vendor name
:"Vendor"
;Supports S60 5th Edition
[0x1028315F], 0, 0, 0, {"Series60ProductID"}
;Files to install
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\release\gcce\urel\HelloWorldBasic.exe"-"!:\sys\bin\HelloWorldBasic.exe"
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\data\z\resource\apps\HelloWorldBasic.rsc"-"!:\resource\apps\HelloWorldBasic.rsc"
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\data\z\private\10003a3f\apps\HelloWorldBasic_reg.rsc"-"!:\private\10003a3f\import\apps\HelloWorldBasic_reg.rsc"
"\S60\devices\S60_5th_Edition_SDK_v1.0\Epoc32\data\z\resource\apps\HelloWorldBasic_aif.mif" -"!:\resource\apps\HelloWorldBasic_aif.mif"

执行:

G:\S60\workspace\helloworldbasic\sis>makesis helloworldbasic_gcce.pkg


Processing helloworldbasic_gcce.pkg...
Created  helloworldbasic_gcce.sis.

则在G:\S60\workspace\helloworldbasic\sis生成helloworldbasic_gcce.sis文件。

执行:

G:\S60\workspace\helloworldbasic\sis>makekeys -cert -password 123456 -len 2048 -dname "CN=myname OU=Development OR=symbian CO=GB  EM=none@none.com" mykey.key mycert.cert

Generating DSA key .................................Generated!

Created key: mykey.key
Created certificate: mycert.cert

这时会在sis目录下生成mycert.cert、mykey.key两个文件。

                7)最后一步,自签名:

G:\S60\workspace\helloworldbasic\sis>signsis helloworldbasic_gcce.sis helloworldbasic_gcce.sisx mycert.cert mykey.key 123456

这时sis目录中会出现已经被自签名的helloworldbasic.sisx文件,放入手机安装着试试吧,是不是可以用啦:)

4.安装Carbide.c++ 2.7

这个还好,选好目录,按照提示安装就行。当然奇怪的问题再次发生。。。我点了finish之后,窗口关闭了。可任务栏中却还留着,打开进程列表,安装进程也还在。我开始以为是安装没有结束,就等啊等啊。。。等了好久它都不关。我就强行结束了程序。问题来了,当我点击程序组中的Symbian Foundation---Carbide.c++ v2.7---Configure environment for WINSCW command line进行环境配置时,系统提示"G:\S60\Carbide_cpp_v2_7\configuration\run_env_update.bat不是有效的 Win32 应用程序"。找到这个文件,果然,显示是0KB。这是什么情况?上次我装的时候就没这种问题啊。没有这个文件,就没法儿自动配置系统变量了。经过长时间的搜索(Google的,Baidu硬是没Bai出来。。。)解决办法是在run_env_update.bat中加入这么两行:

cd "G:\S60\Carbide_cpp_v2_7\x86Build\env_switch\"
env_update.exe

也就是进入安装目录,运行了其中的一个程序。各位根据自己的安装目录,自行更改就行。再点击,就可以运行啦。所有的提示,全都回答y,结束后系统环境就自动配置好了。

测试:这次我们自己新建一个工程。

第一次运行时会自动检查系统环境,建立工作目录。

进入后,File---New---Symbian OS C++ Project---S60---GUI Application---输入Project name---Builder选择SBSv1就行。SBSv1调用的是Perl,而SBSv2调用的是python。

选择工程(右键)---Build Configurations---Set Active---Emulator Debug (WINSCW),再点击工具栏里的Run就行了。模拟器会自动打开,在Applications中可以找到刚才创建的程序。

如果想创建可以在手机中安装的程序,只需将刚才的Set Active改为Phone Release (GCCE),然后右击工程---Build Project,在工程的sis目录下就会生成和sis和sisx文件。如果没有设置签名,软件会自动自签名。

===================================================================================================================================

好啦,整过过程就是这样。有点麻烦,不过多试几次,多看注意事项,有点耐心,还是可以创建好开发环境的。现在iOS和Android系统的开发大行其道,不过我还是喜欢Symbian。呵呵,因为自己的手机是5230,用得挺顺手的,暂时还不打算换。自己开发点小程序,自己用正合适。另外我还是比较喜欢C++,Java完全没怎么学,Symbian C++比较适合自己。

我不喜欢一味地赶潮流,Android和iOS不就是炫一点吗,Symbian也可以做到啊,而且价格便宜得多,安全性也比较好。Google的开发策略已经让Android的兼容性和安全性受到了严峻的挑战。iOS用不起,就不说啦,呵。Symbian从一开始就是专为手机设计的操作系统,开发了这么多年,优化了这么久,运行效率还是很高的,在比较低的配置下就可以流畅使运行。不知Nokia为何一定要放弃Symbian,为何一定要跟微软合作,个人觉得Symbian还很有继续开发潜力,完全可以在原来的基础上继续开发。Nokia的决定真是让我们这些使用Symbian的人不可理解啊。

S60v5 编程环境的搭建(2)相关推荐

  1. S60v5 编程环境的搭建

    下一篇: S60v5 编程环境的搭建(2) 首先要下载相应的支持文件: 1.ActivePerl http://www.activestate.com/activeperl/downloads 2.S ...

  2. Linux下eclipse中shell脚本编程环境的搭建

    注意:本文所用到的linux发行版是fedora 15.如果用fedora 15以上的版本可能会有问题.至于解决方案或者是搭建方法我会尽量抽出时间写一篇新的博客... 本文主要是介绍在linux平台下 ...

  3. 基于C#(Visual Studio 2013)的AutoCAD2016二次开发(一)编程环境的搭建

    机械设计中一般都采用AutoCAD设计软件,在复杂 CAD问题或特殊用途的设计中,依据原有软件的功能往往难以解决问题,在此情况下,只是会使用软件的基本功能是不够的.本着自学和相互交流的原则,撰写如下学 ...

  4. 【Python学习教程】Python编程环境搭建

    文章目录 Windows安装Python(图解) 关于 IDLE Linux(Ubuntu)系统安装Python 更新 Python 版本 重新安装 Python 1) 下载源代码 2) 编译 小技巧 ...

  5. 机器学习Python编程环境搭建

    引言 使用Python作为机器学习的编程工具,具有很多优点,例如Python语法简洁,表达能力强(简短的几行代码抵得上其它语言数十行),第三方支持库多."工欲善其事,必先利其器", ...

  6. 《OpenGL超级宝典》编程环境配置

    最近在接触OpenGL,使用的书籍就是那本<OpenGL超级宝典>,不过编程环境的搭建和设置还是比较麻烦的,在网上找了很多资料,找不到GLTools.lib这个库.没办法自己就借助源码自己 ...

  7. 【Qt入门第1篇】 基础(一)Qt开发环境的搭建和hello world

    导语 从这一篇我们正式开始Qt编程.本篇主要讲解Qt编程环境的搭建.为了适应大多数读者的需要,同时为了避免系统环境的不同而产生不必要的问题,这里选择使用Windows系统的Qt版本.因为在前面几十篇中 ...

  8. linux 运行lua脚本语言,你知道在linux下搭建lua脚本语言的编程环境?

    描述 lua是脚本语言的一种,具体的该脚本的介绍可百度,本文介绍Linux系统下搭建lua编程环境的步骤,以及在搭建过程中碰到的种种问题. 一.下载获取lua源码 地址http://www.lua.o ...

  9. python环境搭建_搭建Python编程环境

    说明:本文面向信息技术新教材环境下的中学生或者编程小白.Python作为新教材落实计算思维的主要载体,有其独特的魅力.千里之行始于足下,搭建Python运行环境是跨出进入新世界大门的第一步. 搭建Py ...

最新文章

  1. POJ1143 Number Game(DP)
  2. 解决方案:无源(PON)光网络在弱电工程中的应用
  3. Matlab 使用GPU加速 转载
  4. 声明式编程与函数式编程_实用程序类与函数式编程无关
  5. python日历模块_Python日历模块| firstweekday()方法与示例
  6. String s1==s2面试题
  7. leetcode-search-in-rotated-sorted-array
  8. 华为EMUI 10系统内测截图曝光:基于Android 10.0
  9. ————————C语言中快速排序方法——————————————
  10. 用python画四叶草-使用 python 操作 redis
  11. 谷歌浏览器不兼容小于12px的字体,在做网页的时候怎么解决
  12. delphi压缩后使用http协议base64上传下载6G超大文件
  13. PHP处理微信昵称特殊符号过滤方法
  14. 单片机软件延时的时间计算
  15. pytorch每日一学22(torch.empty()、torch.empty_like()、torch.empty_strided())创建未初始化数据的tensor
  16. 探讨select in 在postgresql的效率问题
  17. Windows Api 封装 C++ 库
  18. 一种近红外I区荧光染料ICG-CBT 主要应用领域,是药品监督管理局(FDA)批准的体内应用染料
  19. 阿里大鱼短信接口教程php,ECSHOP短信接口【ECSHOP阿里大鱼短信】ECSHOP短信插件手机短信服务设置教程-ECSHOP教程网...
  20. 高仿贝壳找房之使用陀螺仪移动图片Drawable

热门文章

  1. 计算机科学引论2021英文,计算机科学引论= Computing Essentials : 英文
  2. oracle主键必须加分区字段,oracle分区表和主键关系
  3. Python统计序列或文件中元素的频度
  4. HTML图片不能上下铺满屏幕_这应该是最最最简单的,职场PPT图片排版方法了!...
  5. Android微信支付订单支付失败的问题
  6. 论文参考文献格式详细国家标准
  7. 拼多多关键词搜索商品详情分析接口(分类ID搜索精准商品数据)代码对接教程
  8. Qt开源库-顶级浮动窗口系统-Advanced-Docking-System【01】
  9. centos7中kubeadm方式搭建k8s集群(crio+calico)(k8s v1.21.0)
  10. 如果太阳突然爆炸 地球会发生什么?| 1分钟了解广义相对论