I'm chamando funções a partir de uma DLL de 32 bits não gerenciada em um sistema de 64 bits. O que eu recebo é:
BadImageFormatException: Foi feita uma tentativa de carregar um programa com um formato incorrecto. (Exceção do HRESULT: 0x8007000B)
No início, eu tinha meus projetos configurados para a plataforma Any CPU, então mudei ambos para x86, mas este erro ainda está ocorrendo. Esse'é realmente o único conserto que conheço para isso.
As DLLs são't corruptas ou qualquer coisa, porque eu posso usá-las com outros programas (que eu não't tenho a fonte para). Eu pensei que talvez fosse't encontrar uma dependência, mas eu verifiquei e eles'estão todos lá. Além disso, não'não seria uma DllNotFoundException
nesse caso?
O que mais posso fazer? E antes que você diga "Use uma DLL de 64 bits não gerenciada," deixe-me apontar que há't um. ;)
Se você tentar executar aplicativos de 32 bits no IIS 7 (e/ou máquina de 64 bits), você receberá o mesmo erro. Então, a partir do IIS 7, clique com o botão direito do mouse nas aplicações' pool de aplicações e vá para "advanced settings" e mude "Enable 32-Bit Applications" to "TRUE".
Reinicie seu site e ele deve funcionar.
De alguma forma, a caixa de seleção **Build*** no Gerenciador de Configuração tinha sido desmarcada para o meu executável, então ainda estava rodando com o antigo Any CPU build. Depois de corrigir isso, o Visual Studio reclamou que ele não podia't depurar a montagem, mas isso foi corrigido com um reinício.
Eu também tinha este problema. Tentei todas as sugestões aqui, mas elas não't ajudaram.
Encontrei outra coisa para verificar que o arranjou para mim. No Visual Studio, clique com o botão direito do mouse no projeto e abra "Properties". Clique na aba "Compile" (ou "Build") e depois clique em "Advanced Compile Options" na parte inferior.
Verifique o dropdown "Target CPU". Deve combinar com o "Plataforma" você está construindo. Isto é, se você está construindo "Qualquer CPU" então "Target CPU" deve dizer "Qualquer CPU". Percorra todas as suas Plataformas tornando-as ativas e verifique esta configuração.