まりふのひと

Access2003/DLLが正しく呼び出せません

17日の続き で、Accessで作った会員管理の改修を行っているが、おかしなエラーが出るようになった。

DLLが正しく呼び出せません

というもの。1ステップずつ実行してみると、ある関数に飛び、終了して、戻った途端にエラーになる...

  1. 関数から戻る時に「DLLが正しく呼び出せません」エラーが発生するようになってしまったのです...
     "DLL が正しく呼び出せません。" エラーに悩まされていたが、デコンパイルであっさり解消しちゃったとのこと。要はプロジェクトが壊れていただけですな。

     もしかすると絡んでるかもしれません。
    StringをByValで宣言すると領域のアドレスが渡ります。呼ばれたほうでこの値を変更すると領域の再確保が動くはずなのでエラーになるかもしれません。
    • 上の回答をヒントに修復を行ってみたが、改善されなかった。
      下の回答は‥‥ 引数は Optional ByVal で渡しているが、呼ばれた方でこの値は変更していないので該当しない...
  2. DLLが正しく呼び出せません
     呼び出された関数が何らかの理由(通常はプログラムミス=バグ)によりスタックポインタを通常あるべき値とは異なる値にして実行を終了すると、関数の実行から戻ってきた時点で「DLLが正しく呼び出せません」エラーになります。

「スタックポインタ‥‥」と難しいことを言われても、Access/VBA では変えようがないが‥‥ アッ! ヒョッとするとマルチディスプレイ(USB-RGB)が邪魔しているかも...

  1. USB-RGBを[無効]にする
  2. Accessを再起動する。
  3. 問題の機能を実行する。
  4. 何事もなかったように正常終了した。
  5. USB-RGBを有効にする
  6. Accessを再起動する。
  7. 問題の機能を実行する。
  8. 何事もなかったように正常終了した。

その後はエラーは発生していない。本当の原因は何だったのだろうか? むなしい3時間だった