.netクラスライブラリを動的呼び出すとfoobar2000のプラグインをvb.netで書く

本来、C言語のライブラリーは LoadLibrary と GetProcAddress で簡単に使える。
しかし.netのクラスライブラリはこうで使えない。

.netのReflection機能で、クラスライブラリを動的に呼び出せる。
最近少し試した。方法は、
System.Reflection(以下略).Assembly.LoadFileで、クラスライブラリをメモリーに読み込む。
そして、Assembly.GetTypeで指定のタイプを取得する。
あと、Type.GetConstructorで、構造メソッドを取得する。
→ ConstructorInfo.Invokeで、オブジェクト取得
→Type.GetMethodで、メソッド取得
→MethodInfo.Invokeで、メソッドを呼び出す。

これは方法です。

ちなみに、C++.netで書いたクラスライブラリーは、伝統的なエクスポート関数があるなら、LoadLibraryで使えるらしい。
そして、.net機能で、VB.netやC#で書いたクラスライブラリーを動的に呼び出す。
←そして、vb.netでfoobarのプラグインを開発できる。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

実はね、一昨日に友達は「foobar2000のプラグインを開発して、新ファイルを再生するイベントを取得したい」と言った。彼はVB.netできるが、C++できない。
そして私はこの方法を思いついた。foobar2000 sdkでC++で普通のプラグインを書く、機能はon_playback_new_trackのコールバック関数に動的C++.netで書いたDLLの関数を呼び出す(LoadLibraryとGetProcAddress)。C++.netで書いたDLLは、Reflection機能でvb.netで書いたクラスライブラリーを使う。
ちなみに、foobar2000のプラグインを直接にC++.netで作れないようだ。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
foobar2000のSDKをlibにコンパイルの方法
foobar2000フォルダーで、
cl /w /c /EHsc /DUNICODE /D_UNICODE /DPFC_DLL_EXPORTS /D_WIN32_WINNT=0x501 sdk\*.cpp ..\pfc\*.cpp foobar2000_component_client\component_client.cpp
link /lib /out:..\fbsdk.lib *.obj

intrin.hヘッダーに、エラーが出すかもしれない。
あの_interlockedbittestandsetを気軽にコメント(//)したら問題ないらしい

あとプラグインをコンパイルするとき、shared\shared.libとこのfbsdk.libにリンクする。