Ultra Light ライブラリと Symbol Scanner ライブラリを使用する
状況
Ultra Light ライブラリと Symbol Scanner ライブラリを使用してアプリケーションを構築した場合は、そのアプリケーションをインストールすると Palm デバイスがクラッシュすることがあります。
原因
Ultra Light ライブラリではコンパイラを 4 バイト整数に設定する必要があり、Symbol Scanner ライブラリではコンパイラを 2 バイト整数に設定する必要があります。Palm 実行プログラムのリンク時にコンパイルがエラーになることはありませんが、そのアプリケーションを Palm デバイスにインストールするとメモリ例外が発生します。クラッシュの原因は、インストール時にアプリケーションが実行されていることにあります。また、異なるバイト揃えを使用するように各ライブラリが設定されているため、デバイスがクラッシュします。
解決法
この問題の解決法は、コンパイラ指示文 pragma を使用して 4 バイト整数から 2 バイト整数に切り替え、Symbol Scanner ヘッダ・ファイルをインクルードしてから、コンパイラ指示文 pragma を使用して 2 バイト整数から元の 4 バイト整数に切り替えることです。”if define” が含まれている場合は、C++ コンパイラ指示文がオンになります。
サンプル・コード
#pragma fourbyteints off // int==>2, long==>4
#if defined( __cplusplus ) // Required for Symbol Libraries
extern “C” {
#endif
#include “ScanMgrDef.h” // Scan Manager constant definitions
#include “ScanMgrStruct.h” // Scan Manager structure definitions
#include “ScanMgr.h” // Scan Manager API function definitions
#if defined( __cplusplus )
}
#endif
#pragma fourbyteints on // int==>4, long==>4