2009-08-28 5 views
2

読んだ後Dynamically calling unmanaged dlls in .netマーシャリングされたアンマネージドデリゲートとして.net 3.5 ActionまたはFuncを使用できますか?

私は自分の好みに合わせてコードを修正しようとしています。ロードコールをラップして必要に応じて解放するために、私はidisposableを実装するクラスを作った。しかし、匿名の代理人を使用することが可能な場合、構文を理解できないようです。

var loaded=DynamicLibraryLoader.TryLoad("User32.dll"); 
var beeper=loaded.GetProcAddress("MessageBeep"); 
var type=typeof(Action<UInt32>); 
Action<UInt32> beepAction2=(Action<UInt32>) Marshal.GetDelegateForFunctionPointer(beeper,type); 

最後の行は、指定した型がジェネリック型定義であってはならないことを言って引数の例外がスローされます。この問題を回避する方法はありますか、名前を付けた代理人に管理されていないことを実行する必要がありますか?あなたがアンマネージコードを使用してWindowsにデフォルトで何ができるかのいずれかの興味の参考のために

からLink(DLLをロードし、動的に、ショートカットを作成)

答えて

1

例外が示すように、あなたは非ジェネリックデリゲートを使用する必要がありますがネイティブ関数ポインタをマネージコードに変換します。

+0

なので、構文やその周囲には何もありません。 – Maslow

+0

@Maslow、いいえ、現時点ではありません – JaredPar

+0

他の回答がないので、私は例外が言うことを読み返すだけの回答を受け入れるでしょう、私はいくつかのリソース、回避策のアイデア。 – Maslow

関連する問題