0

リフレクションを使用して、vb.net で dll (アセンブリではなく、管理されていない、おそらく COM オブジェクト モデル) を動的に呼び出したいと考えています。

.net アセンブリである dll 内のメソッドを呼び出すいくつかの異なる方法を見てきましたが、user32.dll や winmm.dll などの dll 内でメソッドを動的に呼び出す方法は見つかりませんでした。これは遅延バインディングと呼ばれると思いますか?

私が質問している理由は、さまざまな機能を外部ライブラリに依存する言語を構築しているためです。

例(私が構築しているこの言語で):

Declare Function mciSendStringA using "winmm.dll" (strCommand As String, strReturn As String, returnLength As Integer, blah As Integer) As Integer

Declare Function WriteConsoleA using "kernel32.dll" (hConsoleOutput As Integer, lpBuffer As String, numberofcharstowrite as Integer, lpReserved as Integer) As Boolean

winmm.dll で mciSendString を呼び出すためのインタープリターをビルドする場合、リフレクションを使用してこれを処理するにはどうすればよいですか? ユーザーが希望する dll/メソッドを参照できるようにしたい。

正しい方向へのガイダンスを得ることができますか?おそらく、私が分解して理解できるvb.netコードでさえありますか?

4

1 に答える 1

0

アンマネージド Win32 ネイティブ ライブラリではリフレクションを使用しません。

代わりに、それらをロードし、アンマネージ関数へのポインターを取得して、アドレスで呼び出します。C# でこれを行う方法は次のとおりです。

http://blogs.msdn.com/b/jonathanswift/archive/2006/10/03/dynamically-calling-an-unmanaged-dll-from-.net-_2800_c_23002900_.aspx

于 2011-12-26T22:03:30.473 に答える