2009-05-04 3 views
1

私は大規模なプロジェクトに取り組んでいますが、今は "Near data segment is 64kより大きい"というエラーにスタックしています。CodeWarrior9を使用してPalm上で 'Near data segment is 64kより大きい問題'を解決する方法はありますか?

「FrmSetEventHandler(frm、DadosConstrutivos1HandleEvent);」とコメントした場合、 PilotMainのPrvAppHandleEventでプログラムはそれをうまくコンパイルします。 de callを使用しようとすると、エラーメッセージが表示されます。

私はすでにマルチセグメントと "拡張モード"を使用しています。

どうすれば解決できますか?

おかげ ロドリゴ・レイテGomide

答えて

0

は私がCodeWarriorには使用しませんが、私が代わりにPocketStudioを使用し、「同じ問題が、」私に多くのことを起こります。

各ユニットは「コードの一部」なので、コンパイルされたユニットが64kより大きくなると、コンパイラは警告し、コードをリンクしません。

一部のコードをそのユニットから別のコードに移動しようとします。

かは、#pragma使用することができます。

#pragma segment Seg1 

... code ... 

#pragma segment Seg2 

... code ... 

よろしく、

クリスチャン。

0

この問題を解決する良い方法はありません。 Palm OSの68Kコードは、68K命令セットがアドレス指定データに対して+ 32Kオフセットしか提供しないので、少量の静的プログラムデータにしかアクセスできません。コンパイラは複雑なポインタ演算を行うためのコードを生成する必要があり、CodeWarriorまたはprc-toolsのどちらもこれをサポートしないため、コンパイラに大きな変更を加える必要があります。

は、ここではいくつかのヒントです:あなたがロードし、実行時にその場所をロックする場所

  • あなたが大規模なデータテーブルを持っている場合は、自分のリソースにそれらを移動してみてください。それはデータセクションからそれらを移動します。
  • リンカーマップ機能をオンにして、データセクションの割り当て方法を確認し、必要のない大きなデータオブジェクトまたは配列があるかどうかを確認します。
  • グローバル変数を宣言する代わりに、MemGluePtrNewを使用して割り当てるメモリへのグローバルポインタを使用します。
関連する問題