2011-02-14 6 views
1

J'ai une application C++/MFC 32 bits (X) qui charge une DLL.Question sur Win7 64 bits

J'ai une autre application 32 bits .NET 3.5 (Y) qui charge la même DLL.

Lorsque je teste ces applications sous Windows 7 64 bits, X charge la DLL sans problème . Mais Y se bloque dès qu'il tente d'appeler une fonction à partir de la DLL.

Ma question est: Que puis-je faire pour que Y fonctionne correctement.

Ai-je besoin de commandes spéciales pour indiquer qu'il s'agit d'une DLL 32 bits?

Merci d'avance!

Cordialement,

jfronner

+0

Lorsque vous dites '32 bit .net 3.5 application ', pouvez-vous vérifier s'il s'agit de MSIL ou de x86. Vous feriez peut-être mieux de compiler en x86. – StuartLC

Répondre

2

Si vous compilez votre application .Net comme plate-forme neutre, il exécutera votre application en 32 bits sur une plate-forme 32 bits, et que 64 bits sur une plate-forme 64 bits.

Dans ce dernier cas, votre application se bloquera probablement lorsqu'elle tentera de charger la DLL 32 bits, car les applications 64 bits ne peuvent charger que les DLL 64 bits.

Compilez explicitement votre application .Net en 32 bits.

3

Habituellement, lorsque les choses se "plantent", il y a un message d'erreur. Ce message d'erreur est souvent utile. En l'absence de ce message, je suis réduit à deviner.

Je suppose que votre application .net cible "AnyCPU" et ainsi sur l'ordinateur 64 bits, il fonctionne comme un processus 64 bits. Un processus 64 bits ne peut pas charger une DLL 32 bits. Si vous passez à la cible "32 bits", tout fonctionnera à nouveau.

Ou vous pouvez compiler votre DLL en 64 bits, mais cela peut être plus compliqué.

+0

@jfronner Cette réponse (ou celle de Patrick) a-t-elle aidé à résoudre votre problème? –

Questions connexes