J'ai une application que nous essayons de migrer vers 64bit à partir de 32 bits. C'est .NET, compilé en utilisant les drapeaux x64. Cependant, nous avons un grand nombre de DLL écrites en FORTRAN 90 compilées pour 32bit. Les fonctions dans les DLL FORTRAN sont assez simples: vous mettez des données, vous sortez des données; aucun état d'aucune sorte. Nous n'y consacrons pas beaucoup de temps, peut-être 3% au total, mais la logique de calcul est inestimable. Puis-je appeler d'une manière ou d'une autre les DLL 32 bits à partir du code 64 bits? MSDN suggère que je ne peux pas, période. J'ai fait du simple piratage et vérifié cela. Tout renvoie une exception de point d'entrée non valide. La seule solution que j'ai trouvée jusqu'ici est de créer des wrappers COM + pour toutes les fonctions DLL 32 bits et d'appeler COM à partir du processus 64 bits. Cela semble tout à fait un mal de tête. Nous pouvons également exécuter le processus dans l'émulation WoW, mais le plafond de la mémoire ne sera pas augmenté, plafonnant autour de 1,6 Go.Appel code 32 bits à partir de 64 bits Processus
Existe-t-il un autre moyen d'appeler les DLL 32 bits à partir d'un processus CLR 64 bits?
C'est le 64bit -> COM -> 32bit chose que je décrivais. Après avoir lu cet article et essayé de faire fonctionner l'échantillon, j'ai décidé qu'il y aurait un meilleur moyen de le faire. Du moins je l'espère. –
La réponse de John est correcte. Il n'y a aucun moyen de mélanger des modules 32 bits et 64 bits dans un processus. Vous devez commencer un deuxième processus. Voir aussi ma réponse ici: http://stackoverflow.com/questions/6523075/how-to-force-net-application-to-run-in-32bit-mode/6533556#6533556 –
Vous n'avez pas nécessairement besoin d'utiliser Les wrappers COM +, mais vous devez utiliser un processus 32 bits. –