किसी कारण से, जब भी मेरा सी # .NET 2.0 एप्लिकेशन GetProcAddress
पर कॉल करता है तो यह हमेशा शून्य देता है।सी # 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
हमेशा एक गैर शून्य मान निर्दिष्ट किया जाए। कोई भी अंतर्दृष्टि जो आप प्रदान करने में सक्षम हो सकती है उसकी सराहना की जाती है। धन्यवाद।
+1, मैंने इसे देखा इससे पहले कि आप इसे मिला। –
यह चाल है! धन्यवाद! –
+1 मैं दीवार के खिलाफ अपने सिर को घंटों तक संकेत दे रहा हूं जब तक कि Google ने मुझे यहां भेजा नहीं!आखिरकार यह ** CharSet = CharSet.Ansi ** ** DllImport ** विशेषता के नामित पैरामीटर को काम करने के लिए केवल एक मामला था। –