著作一覧 |
できた(win32olepatch-2.txt)。
rb_set_end_procを使えば良いのだった。というか、助田さんの助言を取り損なって再発見してしまった。これなら、スクリプト終了後かつCランタイムライブラリのexit呼び出し前に介入できる。
あと、アパートメントの初期化をしたかどうかを保持するTLS(g_ole_initializedを流用)に、__declspec(thread)を利用したので、mingwが対応していなければそこをTLS APIを利用するように修正する必要があります。
が、テストを動かしてわかったけど、rb_set_end_procが動くのが先か、testの実行が先か問題とかあるような。
上のパッチにRELEASE_GLOBALというマクロを定義したが最悪の名前だ。グローバルインターフェイスから、つい名前をつけたが、リリースしているのはローカルインターフェイスなのだからRELEASE_LOCALと、対象を示すべきだ。
ジェズイットを見習え |