wpf - C # - LoadLibrary fejler med 32bit DLL

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en C # -applikation, der lægger en DLL på kørselstid. DLL'en er 32bit, så det er applikationen.


Jeg forsøgte med LoadLibrary fra:


    [DllImport("kernel32.dll")]
    private static extern IntPtr LoadLibrary(string dllToLoad);
    [DllImport("kernel32.dll")]
    private static extern IntPtr GetProcAddress(IntPtr hModule, string procedureName);
    [DllImport("kernel32.dll")]
    private static extern bool FreeLibrary(IntPtr hModule);


men uden resultat det vender altid tilbage IntPtr.Zero. Jeg forsøgte også at bruge


[DllImport("\%windir\%\SysWOW64\kernel32.dll")]
    private static extern IntPtr LoadLibrary(string dllToLoad);
    [DllImport("\%windir\%\SysWOW64\kernel32.dll")]
    private static extern IntPtr GetProcAddress(IntPtr hModule, string procedureName);
    [DllImport("\%windir\%\SysWOW64\kernel32.dll")]
    private static extern bool FreeLibrary(IntPtr hModule);


men på denne måde får programmet en 'System.Windows.Markup.XamlParseException' undtagelse, når du ringer LoadLibrary.


Har nogen mødt dette problem før?

Bedste reference


Din C # exe skal kompileres til 32bit.


Tjek denne side for fejlkode detaljer:

https://msdn.microsoft.com/en-us/library/ms681382(v=vs.85).aspx[4]



  ERROR\_BAD\_EXE\_FORMAT

  193 (0xC1)

  \% 1 er ikke et gyldigt Win32-program.