nmtysh.log

Tech系のネタや日々の独り言などを書いています。

モジュールで定義したAPI(DLL)呼び出す関数を使う時の落とし穴?

HSPで久々に嵌りました。

 

外部DLLの命令を使う関数群をモジュール化して使っていたのですが、

プログラムを修正した時に急に命令が実行できなくなりました。

 

エラーの内容は「error 2 : 文法が間違っています」ですが、エラー箇所はいじってないんですよね。

なのにエラーになると。

原因が全く分からなかったので、仕方なくエラーが出ない(ちゃんと動く)状態から、

少し修正しては実行し、を繰り返していくとある所から急にエラーが出るようになりました。

 

ある関数を呼び出さなくなった途端エラーになったので命令を追っていくと、

くだんのモジュールの #deffunc で定義した命令でした。

 

そのモジュールでは他に #deffunc している箇所はなく、

#func / #cfunc で定義したAPI呼び出し命令を呼んでいました。

 

なので、そのモジュールを利用する場合必ず呼ぶ命令を #deffunc 経由にしたところ、

エラーが出ずに実行出来るようになりました。

 

使うのが #func / #cfunc 命令だけだと、関数の参照が解決出来ないんでしょうかね?

(当然のことながら #func / #cfunc は global にして呼び出していましたよ?)

 

2時間ぐらい解決に悩んでしまいました。とほほ