質問
.NETからアンマネージコードを動的にP / Invokeする最良の方法は何ですか?
たとえば、一般的なCスタイルのエクスポートを含むアンマネージDLLがいくつかあります。 DLLへのパスを取得し、エクスポートされた名前に基づいて関数をP / Invokeします。実行時までDLL名がわかりません。
基本的に、.NETの LoadLibrary
および GetProcAddress
と同等のものは何ですか? (これらの関数を使用して、完全にアンマネージコードで同じ目標を達成する既存のコードがあります。)
解決
この記事では、役立つGetProcAddressのタイプセーフなマネージラッパーについて説明します。
http://blogs.msdn.com/ jmstall / archive / 2007/01/06 / Typesafe-GetProcAddress.aspx
他のヒント
これを行うには、LoadLibraryとGetProcAddressをP / Invokingし、 Marshal.GetDelegateForFunctionPointer 。
詳細については、この記事をご覧ください。
この Jonathan Swiftからのブログ投稿title .netから管理されていないdllを動的に呼び出す
1つのオプションは、適切なDLLと関数をメモリにロードし、パスに基づいてマネージコードにその関数を返すネイティブ関数を作成することです。このように、GetProcAddressトリックを自然に使用して、関数ポイントを返すことができます。次に、この関数にPInvokeし、デリゲートを取得して、適切なDLLを呼び出します。
所属していません StackOverflow