Meine App funktioniert gut auf Win 7 x86 und x64 Testumgebung, aber auf Vista und XP tut es nicht.LoadLibrary-Funktion Null zurück in Vista und XP
hier ist der Beispielcode:
internal static class NativeMethods
{
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool SetDllDirectory(string lpPathName);
[DllImport("kernel32", SetLastError = true)]
internal static extern IntPtr LoadLibrary(string lpFileName);
}
....
string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Native");
path = Path.Combine(path, string.Format("x{0}", IntPtr.Size*8));
NativeMethods.SetDllDirectory(path);
IntPtr ptr2 = NativeMethods.LoadLibrary("SQLite.Interop.dll");
In Vista oder XP IntPtr == nicht null Angelegenheit x86 oder x64.
Lösung Build-Ziel unter .net Framework 2, x86.
Irgendwelche Ideen, wie man dieses Problem löst?
Haben Sie versucht, .dll zum Bibliotheksnamen in der DllImport-Direktive hinzuzufügen? – guga
Haben Sie überprüft, dass 'Pfad' korrekt ist? Sie fügen dem Pfad anscheinend 'x32' oder' x64' hinzu - aber das ist unter XP oder Vista möglicherweise nicht korrekt. Wo ist die 'SQLite.Interop.dll' installiert? – ChrisF
Ja, ich überprüfe es, der Pfad ist korrekt. –