Фон:
Мы приобрели программный продукт, который встраивается в 32-разрядное приложение Windows в Visual Studio. Мы хотим портировать это приложение на 64-битную версию.
Критически важным компонентом этого кода является статическая библиотека «черного ящика» (файл .a), изначально созданная с помощью gFortran третьей стороной. Первоначальный разработчик с тех пор скончался, и исходный код на Фортране, который мы смогли получить, был неполным, а не версия, из которой была построена эта библиотека (и содержит критические ошибки, отсутствующие в скомпилированной библиотеке). Они не использовали VCS.
Проблема:
Я хотел бы создать 64-битную статическую библиотеку, код которой функционально эквивалентен имеющейся у нас 32-битной статической библиотеке.
Что я пробовал:
Вы можете хранить 32-битную двоичную библиотеку, но загружать ее в 32-битный хост-процесс и использовать какой-либо IPC (разделяемая память, именованные каналы, локальное петлевое сетевое соединение и т. Д.) Для передачи данных в / из 64-битной системы. немного процесса.
Еще одним преимуществом этого подхода является то, что в случае сбоя кода на Фортране он приведет к остановке только дочернего хост-процесса, а не вашего основного приложения, и ваша программа может немедленно запустить его снова; и если это однопоточная программа на Фортране, то вы могли бы раскрутить несколько экземпляров для многоядерного параллелизма.
Других решений пока нет …