昨天的 工作 是开始移植 我的程序 到 S60 3rd版本上。
但是刚刚开始就遇到了 问题。我的DLL在 S60 3rd 上编译不过,可以生成 DLL,但不能生成 lib 。
这让我头大了不 少。我也是第一次做移植工作。SYMBIAN上的资料本来就少的可怜。同事们帮忙看了一下,也没有结果。
下班的路上一直在思考,为什么不行?
晚上回去吃了饭,因为家里有邻居在,就没好意思开电脑继续工作。一直等到邻居走后,赶紧打开电脑找什么原因。
我用 Carbide C++ 1.3 创建了 一个 “Basic dynamically linked library(DLL)”的工程不写任何的代码。编译 这是也出现我的 错误:
Not attempting to create "/Symbian/9.1/S60_3rd_MR/EPOC32/RELEASE/WINSCW/UDEB/DemoDll.lib".
晕的不行了。为什么呢??
然后我找到了 SDK 中的例子。这个例子也是DLL,然后导入工程,编译!编译通过。有希望了。这可以判断至少开发环境应该是没有任何问题的。不然这个不会编译过。
接着我对比了 两个工程的 BLD文件和 MMP文件。没有发现什么问题。
又晕,为什么呢??
我查看了两个工程目录下的文件。能编译过的下面有两个文件(BWINS和EABI)里面有一个 .def的文件。
上网查了一下这个文件的作用:
原因是血少DEF文件。
可以使用abld freeze生成相应平台的DEF文件.
abld [ test ] freeze [-k] [-v] [ platform ] [ program ]
bldmake bldfiles //生成abld文件
abld makefile vc6 //生成工程文件
abld freeze //封版本吧
然后程序就可以编译通过,而且LIB文件也生成了。