2006/07/18
マジな記事w マネージとアンマネージの混在 .NET2編 その1
作成者: love2hina
カテゴリー: 未分類
なぜだか真剣な記事もたまには良いですよね。
WMP Sync Pluginをバージョンアップして、コードを書き直しているのですが、
Windows Media Playerはアンマネージのアプリケーションです。
そこから呼び出されるプラグイン内でマネージコードを使用しているのですが、
.NET Framework 1.1から.NET Framework 2.0に移行するにあたり、
この混在アセンブリの初期化部分等が改善されているみたいです。
従来では、_vcclrit.hをインクルードして、
__crt_dll_initialize()
などを使用して手動でマネージ部分の初期化を行っていました。
外部から呼ばれる関数全てにこの初期化、
解放関数をばらまかなくてはならないようで、COMのDLLだと、
・DllCanUnloadNow
・DllGetClassObject
・DllRegisterServer
・DllUnregisterServer
の上記の関数を変更する必要があり、はっきり言って面倒でした…
(まだ4関数だから良いっていえばまだいいですけど)
.NET Framework 2.0ではこれらの関数は不要になり、
DLLがロードされたときに自動的に初期化等を行うようになっているようです。
外部から呼び出されるアンマネージ関数は別ファイルにしておいて、
/clrオプションをファイル単位で外してコンパイルするようです。
うわ、書いてて眠くなった。。。次は明日にしよう…
おやすみー。
ちなみに管理人の独自調査(試行錯誤とも言う)の結果ですので内容は保証しません!