我有一个Foo.dll
要加载到进程空间中的 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
任何有关此事的帮助将不胜感激!