S60 的除法出错怎么解决?

eqiaotea 2004-11-26 10:41:45
我是用一个Demo测试程序调用我的一个用C写的用S60编译的Lib.
其中有一段代码为:
long lSample;
long nMaxAmp;
...
lSample /= nMaxAmp; // 这一行有错
打Lib包没有报错
但是在用Demo连接编译的时候会报下面的错误.
undefined reference to '__divsi3'

relocation truncated to fit: ARM_26 __divsi3

然后我把
lSample /= nMaxAmp;
改成
lSample /= 30000;
就好了

请问这是什么错误?
我该怎么修改才行啊?

...全文
72 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
eqiaotea 2004-11-27
  • 打赏
  • 举报
回复
倒...
呼唤啊....
是不是要作成dll才行?
eqiaotea 2004-11-26
  • 打赏
  • 举报
回复
可是我在Demo的ui里面写:
nTxtFile = nTxtFile / nTxtSize;
这样的语句就能通过,
这是为什么?
请多帮忙啊>..
eqiaotea 2004-11-26
  • 打赏
  • 举报
回复
编译的是armi 选项不是vc调试的
vc调试都通过了.
eqiaotea 2004-11-26
  • 打赏
  • 举报
回复
是否S60不支持 lib中有除法,取余和行数返回一个结构的操作啊?
摆脱啦,大家给个建议嘛.
eqiaotea 2004-11-26
  • 打赏
  • 举报
回复
改成常量怎么就没有问题?
编译的时候怎么知道 变量相除 会溢出?
后来我写了个测试代码
#include "TestCore.h"
//static long g_O=4;
LINEDEF TestCore(int i)
{
LINEDEF nRet;
long nDiv = 900;
nDiv = nDiv/i; //修改成 nDiv = nDiv/90;
nRet.LspId = nDiv%i; //修改成 nRet.LspId = nDiv%3;
// g_O = nRet.LspId;
return nRet;
}

按照上面修改后打成Lib
测试ui在调用这个Lib编译就没有问题
如果不修改
就会有类似上面的错误.
大家可以试试
我测试工程如设置下:

TARGET TestCore.lib
TARGETTYPE lib
UID 0

SOURCEPATH .
SOURCE TestCore.c

USERINCLUDE .

//系统路径设置
SYSTEMINCLUDE . \epoc32\include
SYSTEMINCLUDE . \epoc32\include\libc
SYSTEMINCLUDE . \epoc32\include\libc\sys

LIBRARY estlib.lib
lasery 2004-11-26
  • 打赏
  • 举报
回复
溢出?
eqiaotea 2004-11-26
  • 打赏
  • 举报
回复
这个板块的人是不是很少啊?
总应该有人支持一把啊.

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧