想做Symbian的开发已经好久了, 老是时间和决心没有同时满足. 现在感觉不能跟着MS一条路走下去, 所以就有了这个主题......
1. 安装ActivePerl(一路Next下去)..
2. 安装J2SE.
3. 安装SDK. 由于目标设备是QD, 所以SDK当然是选择1.2版的了(最好使用默认路径).
4. 安装VC 6.0(补丁为SP3或更高, VS8.0没有试验成功). 安装好之后并不需要修改环境变量(其他版本的SDK不清楚).
在"Symbian/6.1/Series60/Series60Ex"这个路径下面建立一个项目代码的文件夹"AlbCode"(其他名字也可以的, 不要有空格就好), 然后AlbCode里面建立HelloText文件夹, 这里面要把下面的代码保存成CPP格式放在里面.
//hellotext.cpp
#include <e32base.h>
#include <e32cons.h>
LOCAL_D CConsoleBase* gConsole;
//
实际主函数
void MainL()
{
gConsole->Printf( _L("Hello world!/n") );
}
//
控制台装置
void ConsoleMainL()
{
//
获取控制台
gConsole = Console::NewL( _L( "Hello Text" ), TSize( KConsFullScreen, KConsFullScreen ) );
CleanupStack::PushL( gConsole );
//
调用函数
MainL();
//
在中止前暂停
User::After( 1000000 ); //5 second delay
}
//
清理栈装置
GLDEF_C TInt E32Main()
{
__UHEAP_MARK;
CTrapCleanup* cleanupStack = CTrapCleanup::New();
TRAPD( error, ConsoleMainL() );
__ASSERT_ALWAYS( !error, User::Panic( _L( "SCMP" ), error) );
delete cleanupStack;
__UHEAP_MARKEND;
return 0;
}
但是, 现在仅有这样的一个CPP文件还不能编译, 还需要下面这样两个文件才可以(作用会在后面说明):
BLD.INF
//BLD.INF
PRJ_MMPFILES
hellotext.mmp
hellotext.mmp
//hellotext.mmp
TARGET HelloText.exe
TARGETTYPE exe
SOURCEPATH .
UID 0
SOURCE helloText.cpp
USERINCLUDE .
SYSTEMINCLUDE /epoc32/include
LIBRARY euser.lib
OK, 现在要做的是打开命令行, 路径切换到"Symbian/6.1/Series60/Series60Ex/AlbCode/Hellotext", 运行下面的命令:
bldmake bldfiles
等待3~5秒之后, 命令会结束,不产生任何提示信息, 这时会在HelloText文件夹下面生成ABLD.BAT这个文件.
接下来运行:
abld build armi urel
如果没有错误信息产生, 这时在"Symbian/6.1/Series60/Epoc32/Release/armi/urel"路径下面会产生HelloText.EXE这样一个文件, 拷到MMC卡里面, 在QD上通过SeleQ这类的工具就可以直接运行啦~
如果身边暂时没有设备, 还可以通过模拟器来Debug.首先在命令行中运行Epoc, 如果出现一个模拟器程序,则可以继续.
在命令行中切换到"Symbian/6.1/Series60/Series60Ex/AlbCode/Hellotext"路径下,输入:
abld build wins udeb
同样,如果没有错误信息出现, 则会在"Symbian/6.1/Series60/Epoc32/Release/wins/udeb"下面生成HelloText.EXE, 双击就可以在模拟器中运行了.
模拟器运行还有另外一种方法,运行:
abld makefile vc6
这时会在"Symbian/6.1/Series60/Epoc32/BUILD/SYMBIAN/6.1/SERIES60/SERIES60EX/ALBCODE/HELLOTEXT/HELLOTEXT/WINS"下面生成一个HelloText.DSW的VC的项目文件, 用VC打开按F7编译同样会在刚才那个目录下面生成HelloText.EXE. 这时可按F5直接在VC中运行模拟器.