2

どんなに奇妙に聞こえても、私はそれが必要です O_o さて、別の解決策です。ネイティブ DLL をバイト配列として RAM にロードすることが可能であれば、DllImport なしでそこから関数を呼び出します >_<

このように:

byte[] dll_data = File.RealAllBytes("native.dll"); //this is just example, in real architecture bytes comes from another source and should never be stored on HDD
//uhh... ohh... do something to call exported function named "WeirdNativeFunction"
4

1 に答える 1

1

適切なメソッドを呼び出して、ネイティブ DLL を呼び出しプロセスにロードする必要があります。GitHubのMemoryModuleプロジェクトは、これを処理するための (ネイティブ) API を提供します。これは、C++/CLI プロジェクトから使用できます。

native.dllをプロセスにロードしたら、 P/Invoke を使用して GetProcAddressを呼び出して へのハンドルを取得し、"WeirdNativeFunction"それ Marshal.GetDelegateForFunctionPointerをマネージド デリゲートに変換して呼び出すことができます。

于 2013-07-02T19:57:25.577 に答える