C # GetProcAddress возвращает ноль

По какой-то причине, когда мое приложение C # .NET 2.0 вызывает GetProcAddress , оно всегда возвращает ноль.

public class MyClass
{
    internal static class UnsafeNativeMethods
    {
        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        internal static extern IntPtr LoadLibrary(string lpFileName);

        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        internal static extern bool SetDllDirectory(string lpPathName);

        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        internal static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
    }

    private void MyFunc()
    {
        IntPtr _dllHandle;
        IntPtr _fptr;
        string _fullPath = ".\\mydll.dll";
        string _procName = "MyDllFunc";

        _dllHandle = UnsafeNativeMethods.LoadLibrary(_fullPath);
        _fptr = UnsafeNativeMethods.GetProcAddress(_dllHandle, _procName); // <-- Always returns zero.
    }
}

Я уверен, что имя функции написано правильно, и _fullPath предположительно верен, поскольку _dllHandle всегда получает ненулевое значение. Мы ценим любую информацию, которую вы можете предоставить. Спасибо.

13
задан Jim Fell 20 September 2010 в 18:24
поделиться