● デバッグ・ヒント

ldstr の初期化

ldstr 系関数を使用している場合は、まず exe の場所に ldstr.dll があるかを確認してください。また、可能ならば floatex_ldstr_init の追加とエラーチェックを行ってください。

数値を文字列に変換する場合、出力先バッファ内に文字列の初期値をセットしておく事で、エラーチェックなしに ldstr.dll の存在を確認する事ができます。

#include <stdio.h>
#include "floatex.h"

void __cdecl    main(void)
{
    unsigned int    oldcw;
    char            buf[32] = "ldstr.dll not found.";

    oldcw = floatex_storecw();
    floatex_loadcw(FEX_PC_64 | FEX_RC_NEAR | FEX_MCW_EM);

    /*
      初期化に成功すれば数値を表示する。
      失敗した場合は "ldstr.dll not found." を表示する。
    */
    floatex_ldstr_ldtoa(fex_const_pi,buf);
    printf("%s\n",buf);

    floatex_ldstr_term();
    floatex_loadcw(oldcw);
}

この方法は簡単なので、テストプログラムやデバッグ等で使用する時には便利です(ただし、エラーでも処理が進んでしまう事に注意)。ldstr 系関数は、初期化が行われていない状態で呼び出された場合は、先に初期化処理を行います。その初期化処理に失敗した場合は関数を中断しますので、出力先のバッファは内容が変更されません。