我想要加载到进程空间中的DLL Foo.dll
。此DLL是本机的,不受管理。我还有一个静态类NativeMethods
,其中包含从LoadLibrary
调用的GetProcAddress
,FreeLibrary
和Kernel32.dll
的函数代理。这些工作正常,因为我可以在尝试加载Kernel32.dll
时获得指针。
我的问题在于,在我的bin文件夹中,我设置了一个名为modules
的目录,它将包含我所有非托管的Dll。当我尝试从此目录加载Foo
时,LoadLibrary
函数返回零指针,但是当我尝试从bin目录加载它时,我得到一个指向内存地址的指针。
我的DLL被加载如下:
IntPtr dll = NativeMethods.LoadLibrary(Directory.GetCurrentDirectory() + "\\modules\\Foo.dll");
//dll = 0
IntPtr dll = NativeMethods.LoadLibrary(Directory.GetCurrentDirectory() + "\\Foo.dll");
//dll = address
非常感谢任何有关此事的帮助!