我正在做一个大型项目,现在我对这个“近数据段大于 64k”错误感到困惑。
如果我评论“FrmSetEventHandler(frm,DadosConstrutivos1HandleEvent);” 在 PilotMain 的 PrvAppHandleEvent 上,程序编译得很好。如果我尝试使用 de call,则会收到错误消息。
我已经在使用多段和“扩展模式”。
我该如何解决这个问题?
谢谢罗德里戈·雷特·戈米德
我正在做一个大型项目,现在我对这个“近数据段大于 64k”错误感到困惑。
如果我评论“FrmSetEventHandler(frm,DadosConstrutivos1HandleEvent);” 在 PilotMain 的 PrvAppHandleEvent 上,程序编译得很好。如果我尝试使用 de call,则会收到错误消息。
我已经在使用多段和“扩展模式”。
我该如何解决这个问题?
谢谢罗德里戈·雷特·戈米德
我不使用 CodeWarrior,但我使用的是 PocketStudio,“同样的问题”经常发生在我身上。
每个单元都是一个“代码段”,因此当您的编译单元增长到大于 64k 的代码时,编译器会警告您并且不要链接您的代码。
尝试将一些代码从该单元移动到另一个单元。
或者您可以使用#pragma:
#pragma segment Seg1
... code ...
#pragma segment Seg2
... code ...
问候,
基督教。
没有什么好的方法可以解决这个问题。Palm OS 中的 68K 代码只能访问少量的静态程序数据,因为 68K 指令集只为寻址数据提供了 +-32K 的偏移量。这需要对编译器进行重大更改以支持更进一步,因为编译器需要生成代码来执行复杂的指针运算,而 CodeWarrior 或 prc-tools 都不支持这一点。
这里有一些提示: