在C#中加载DLL运行时

时间:2013-08-12 11:38:31

标签: c# dll unmanaged

我想要加载到进程空间中的DLL Foo.dll。此DLL是本机的,不受管理。我还有一个静态类NativeMethods,其中包含从LoadLibrary调用的GetProcAddressFreeLibraryKernel32.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

非常感谢任何有关此事的帮助!

0 个答案:

没有答案