Tengo una aplicación que estamos tratando de migrar a 64 bits desde 32 bits. Es .NET, compilado usando las banderas x64. Sin embargo, tenemos una gran cantidad de archivos DLL escritos en FORTRAN 90 compilados para 32 bits. Las funciones en los archivos DLL de FORTRAN son bastante sencillas: ingresa datos, saca datos; ningún estado de ningún tipo. Tampoco pasamos mucho tiempo allí, un total de quizás un 3%, pero la lógica de cálculo que realiza es invaluable.Llamando al código de 32 bits del proceso de 64 bits
¿hay algún modo llamar a la DLL de 32 bits de código de 64 bits? MSDN sugiere que no puedo, punto. He hecho algunas operaciones de piratería y verificado esto. Todo arroja una excepción de punto de entrada no válida. La única solución posible que he encontrado hasta ahora es crear contenedores COM + para todas las funciones DLL de 32 bits e invocar COM del proceso de 64 bits. Esto parece un gran dolor de cabeza. También podemos ejecutar el proceso en emulación WoW, pero luego el techo de la memoria no se incrementará, limitando a alrededor de 1.6 gb.
¿Hay alguna otra forma de llamar a las DLL de 32 bits a partir de un proceso de CLR de 64 bits?
Esa es la cosa de 64 bits -> COM -> 32 bits que estaba describiendo. Después de leer ese artículo e intentar que la muestra funcionara, decidí que había una mejor manera de hacerlo. Por lo menos eso espero. –
La respuesta de John es correcta. No hay forma de que los módulos de 32 bits y de 64 bits se mezclen en un solo proceso. Debes comenzar un segundo proceso. Véase también mi respuesta aquí: http://stackoverflow.com/questions/6523075/how-to-force-net-application-to-run-in-32bit-mode/6533556#6533556 –
No necesariamente tienen que utilizar Contenedores COM +, pero necesitas usar un proceso de 32 bits. –