J'appelle des fonctions d'une DLL non gérée 32 bits sur un système 64 bits. Ce que j'obtiens est:"Tentative de chargement d'un programme avec un format incorrect" même lorsque les plates-formes sont identiques
BadImageFormatException: Une tentative a été faite pour charger un programme avec un format incorrect. (Exception de HRESULT: 0x8007000B)
Dans un premier temps, mes projets étaient configurés sur la plate-forme Any CPU, je les ai donc tous deux modifiés en x86, mais cette erreur persiste. C'est vraiment la seule solution que je connais pour ça. Les DLL ne sont pas corrompues ou quoi que ce soit, parce que je peux les utiliser avec d'autres programmes (dont je n'ai pas la source). Je pensais que ce n'était peut-être pas une dépendance, mais j'ai vérifié et ils sont tous là. De plus, ne serait-il pas jeter un DllNotFoundException
dans ce cas?
Que puis-je faire d'autre? Et avant de dire "Utiliser une DLL non gérée 64 bits à la place", permettez-moi de souligner qu'il n'y en a pas.
Quels projets avez-vous changé en x86? Et comment les exécutez-vous lorsque vous obtenez l'exception, via le débogueur ou manuellement? Si ce dernier, avez-vous remarqué que lorsque vous avez changé en x86, vous avez un nouveau dossier dans votre répertoire bin \? Il s'agit essentiellement de bin \ x86 \ Debug pour les fichiers. –
Pouvez-vous vérifier que l'exécutable s'exécute en mode 32 bits (* 32 dans le gestionnaire de processus)? –
@Lasse V. Karlsen: Oui, j'ai enlevé le bit x86 du chemin de sortie quand j'ai changé la plate-forme dans chaque projet. Mon premier projet est une DLL qui encapsule les fonctions dans la DLL non managée. Le deuxième projet est un exécutable qui utilise le wrapper dans la première DLL. Les deux sont définis sur x86. –