メインコンテンツへスキップ

64bit版RIAServerからCallDLLするとエラー(-197)で落ちる

コメント

6件のコメント

  • Tanda

    エラーの197番ですと、コンテキストが消滅しているというエラーなのですが、コンテキストIDがサーバでタイムアウトしているということはありませんか?バッチは時間的にはどのくらい掛かる処理なのでしょうか?

  • Permanently deleted user

    ISHJIMA様

    サポートには動的にコールしたいので実行環境が32bitか64bitか判定する方法を聞いて『OSEnvGet('ProgramFiles')』ですと回答を頂いて、いざ動かすと落ちました。DLL側の問題ですと一蹴されないような問合せ方を考え中です。失礼な話これって動いたことあるの?ってレベルで質問しました。

    64bit開発用バックグランドエンジンは知らなかったです、開発版からデバッグ出来ないって思ってた所です。ありがとうございます。

    tanda様

    バッチ時間は1秒もありません。mgerrorログには『Execution Path:』で始まるメモリクラッシュの時みたいな原因不明の落ち方をしています。この場合はメモリのダンプを送るようにサポートに言われるやつです。ありがとうございます。

     

     

     

     

     

  • Tanda

    -103とか、-104のエラーではなくて、-197で落ちているっていうのがちょっと気になりますね。エラー発生後もアプリケーションはまだ動いているっていうことですかね?そのコンテキストだけがエラーで強制排除されているってことでしょうかね?

  • Permanently deleted user

    tanda様

    mgerrorでエラーコードらしきものは『ERR-THREAD-ABORTED (-139)』だけでした。クライアント側のエラーは(-197)でアプリは終了してしまいます。サーバのインスタンスは生きているので新しくクライアントは起動できます。

    シンプルなプログラム作ってもう少しデバッグしてみます。ありがとうございます。

  • Tanda

    -139ですと、たしかにそのタスクだけ排除されてますね。

  • Permanently deleted user

    自己解決しました。

    今回のDLLは『外部コール C=COM』で呼出すのが正解みたいでした。
    32bit版はCallDLL関数で戻り値に数値型変数を使って偶然動作していただけで、間違った使い方をしていました。
    OLE変数にDLLを読み込ませて『外部コール C=COM』で戻り値を取るのが正しかったようです。
    自分でも CallDLL、CallDLLF、CallDLL、外部コールC=COM、外部コールU=UDP の使い分けがよくわかってないのが、わかりました。

    ありがとうございました。

サインインしてコメントを残してください。