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 回答