さて困った。。。
gogo.dllの入力としてファイル名を渡す場合には問題ないのだが、ユーザー関数を渡す場合に問題になる。
ユーザー関数は、当然C言語になるわけで、しかもDLLになる。
DLLにコールバックされた場合、そのユーザー関数はJAVAにコールバックする事ができない。
対象となるJAVAオブジェクトが特定できないためだ。
対応方法は2つ。
A.gogo.dllをカスタマイズし、コールバックする際にJAVAオブジェクトのインスタンスを一緒に渡すようにする。
B.gogo.dllからコールバックされるJNIのDLL内のスタティック領域にインスタンスを保存しておく。この場合、複数の処理を同時に行うことができない。
Aは難しそうだからBかな。
実質的には問題ないはずだ。
ユーザー関数は、当然C言語になるわけで、しかもDLLになる。
DLLにコールバックされた場合、そのユーザー関数はJAVAにコールバックする事ができない。
対象となるJAVAオブジェクトが特定できないためだ。
対応方法は2つ。
A.gogo.dllをカスタマイズし、コールバックする際にJAVAオブジェクトのインスタンスを一緒に渡すようにする。
B.gogo.dllからコールバックされるJNIのDLL内のスタティック領域にインスタンスを保存しておく。この場合、複数の処理を同時に行うことができない。
Aは難しそうだからBかな。
実質的には問題ないはずだ。
Comments