Ik roep functies aan van een 32-bit unmanaged DLL op een 64-bit systeem. Wat ik krijg is:
BadImageFormatException: Er is geprobeerd een programma te laden met een onjuist formaat. (Uitzondering van HRESULT: 0x8007000B)
In het begin had ik mijn projecten ingesteld op het Any CPU platform, dus ik veranderde ze allebei naar x86, maar deze fout treedt nog steeds op. Dat's echt de enige oplossing die ik ken voor dit.
De DLL's zijn niet corrupt of zo, want ik kan ze met andere programma's gebruiken (waarvan ik de bron niet heb). Ik dacht dat het misschien een afhankelijkheid niet vond, maar ik controleerde en ze'zijn er allemaal. Plus, zou het in dat geval niet een DllNotFoundException
gooien?
Wat kan ik nog meer doen? En voordat je zegt "Gebruik in plaats daarvan een 64-bit unmanaged DLL," laat me je erop wijzen dat die er niet is';)
Als je 32-bit toepassingen probeert te draaien op IIS 7 (en/of 64-bit OS machine), zul je dezelfde fout krijgen. Dus, vanuit IIS 7, klik met de rechtermuisknop op de applicaties' applicatie pool en ga naar "advanced settings" en verander "Enable 32-Bit Applications" naar "TRUE".
Herstart uw website en het zou moeten werken.
Op de een of andere manier was het selectievakje Build in de Configuration Manager uitgevinkt voor mijn uitvoerbare bestand, zodat het nog steeds draaide met de oude Any CPU build. Nadat ik dat verholpen had, klaagde Visual Studio dat het de assemblage niet kon debuggen, maar dat was verholpen met een herstart.
Ik had dit probleem ook net. Ik heb alle suggesties geprobeerd, maar ze hielpen niet.
Ik vond een ander ding om te controleren dat het voor mij oploste. In Visual Studio, klik met de rechtermuisknop op het project en open "Properties". Klik op het "Compile" (of "Build") tabblad en klik dan op "Advanced Compile Options" onderaan.
Controleer de dropdown "Target CPU". Deze moet overeenkomen met het "Platform" dat u aan het bouwen bent. Dat wil zeggen, als je bouwt "Any CPU" dan moet "Target CPU" zeggen "Any CPU". Ga door al je Platforms door ze actief te maken en controleer deze instelling.