Question

J'ai une application que nous essayons de migrer de 32 bits à 64 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 32 bits. Les fonctions dans les DLL Fortran sont assez simples: vous insérez des données, vous extrayez des données; aucun état d'aucune sorte. Nous n'y passons pas non plus beaucoup de temps, peut-être 3% au total, mais la logique de calcul utilisée est inestimable.

Puis-je en quelque sorte appeler les DLL 32 bits à partir de code 64 bits? MSDN suggère que je ne peux pas, point final. J'ai fait quelques piratages simples et vérifié cela. Tout jette une exception de point d'entrée invalide. La seule solution possible que j'ai trouvée jusqu'à présent consiste à créer des wrappers COM + pour toutes les fonctions DLL 32 bits et à appeler COM à partir du processus 64 bits. Cela ressemble à un mal de tête. Nous pouvons également exécuter le processus en émulation WoW, mais dans ce cas, le plafond de la mémoire ne serait pas augmenté, plafonnant à environ 1,6 Go.

Existe-t-il un autre moyen d'appeler les DLL 32 bits à partir d'un processus CLR 64 bits?

Était-ce utile?

La solution

Vous aurez besoin de charger la DLL 32 bits dans un processus 32 bits distinct et de faire en sorte que votre processus 64 bits communique via une communication interprocessus. Je ne pense pas qu’il soit impossible de charger une DLL 32 bits dans un processus 64 bits, sinon.

Il y a un très bon article ici:

Accéder à 32- DLL bit à partir de code 64 bits

Autres conseils

Vous devez écrire vos processus exécutables sous forme de processus 32 bits (par rapport à Tout processeur ou x64) pour qu'ils soient chargés avec WoW32 pour Vista. Cela les chargera en mode d'émulation 32 bits et vous n'aurez pas le problème du point d'entrée. Vous pouvez laisser vos bibliothèques en mode AnyCPU, mais vos exécutables doivent être compilés au format x86.

La réponse de John est correcte si vous ne voulez pas recompiler vos DLL existantes. Cependant, cela pourrait être une option pour vous aussi.

Notre équipe est en train de migrer notre code FORTRAN x86 vers x64 pour augmenter le plafond de la mémoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top