[DllImport("kernel32", SetLastError=true, CharSet = CharSet.Ansi)]
static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)]string lpFileName);
<DllImport("kernel32.dll", SetLastError:=True), CharSet:=CharSet.Ansi> _
Public Shared Function LoadLibrary(ByVal lpFileName As String) As IntPtr
End Function
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpFileName As String) As IntPtr
None.
None.
public static IntPtr LoadWin32Library(string libPath)
{
if (String.IsNullOrEmpty(libPath))
throw new ArgumentNullException("libPath");
if (Environment.Is64BitProcess)
throw new Exception(String.Format("Can't load {0} because this is a 64 bit proccess", libPath));
IntPtr moduleHandle = LoadLibrary(libPath);
if (moduleHandle == IntPtr.Zero)
{
var lasterror = Marshal.GetLastWin32Error();
var innerEx = new Win32Exception(lasterror);
innerEx.Data.Add("LastWin32Error", lasterror);
throw new Exception("can't load DLL " + libPath, innerEx);
}
return moduleHandle;
}
private void LoadDll() {
hExe = LoadLibrary(mFileName);
if (hExe == IntPtr.Zero) {
throw new System.ComponentModel.Win32Exception("Cannot load " + mFileName);
}
// etc..
}
Do you know one? Please contribute it!