J'ai compilé une application .NET en utilisant l'option Any CPU
. Cette application .NET utilise une DLL non gérée (wrapper géré) qui encapsule les appels C++. Cet encapsuleur .NET réside dans GAC.Impossible de charger l'ensemble sur XP 64bit
Lorsque j'exécute l'application .NET, elle fonctionne correctement sur XP 32 bits. Mais quand je le lance sur XP 64 bits, il échoue et donne l'exception suivante:
Impossible de charger le fichier ou l'assemblage « nom dll, Version, Culture = neutral, PublicKeyToken » ou une de ses dépendances.
Comment résoudre ce problème?
Est-ce que l'option CPU ne suffit pas? –
Non, ce ne sera pas. L'option "Any CPU" permet de construire un seul ensemble qui fonctionnera sur 32 à 64 bits. Lorsqu'il est exécuté sur un système d'exploitation 64 bits, .NET démarre un processus 64 bits et utilise la version 64 bits du compilateur JIT. Par conséquent, vous obtenez une erreur lorsque ce code tente ensuite de charger une DLL 32 bits seulement. Vous devez spécifiquement indiquer que .NET ne doit exécuter le code que dans un processus 32 bits, quel que soit le système d'exploitation sur lequel il s'exécute en spécifiant x86. – AnthonyWJones