Идентифицировать файл (предположительно фортрановская либа)

durka82

Подкинули проект на фортране, который должен компилироваться и работать.
Но он выдает ошибки линковки.
Сказали, что это все есть в либе , которая приложена к проекту, и что раньше (когда-то давно) все компилировалось и работало.
Либа действительно есть, но вот подключаться в Compaq Fortran 6.6 не хочет - говорит, что она какая-то неправильная
Linking...
.\for\AR7.LIB : fatal error LNK1136: invalid or corrupt file
:(
Команда
lib /list ar7.lib
выдает пустой список, а
dumpbin ar7.lib
выдает сообщение
Dump of file ar7.lib
ar7.lib : warning LNK4048: Invalid format file; ignored
.
Что это за либа такая и можно ли ее как-то подключить/починить?

SPARTAK3959

Судя по строкам dosx,_lf_exitdos и rminit - это либа для защищенного 32-битного режима dos. А Compaq Fortran комплирует под windows. Тебе нужен тот досовый компилятор фортрана, каким была скомпилена эта либа, либо ее исходники.

durka82

То есть отконвертить ее без исходников во что-нибудь удобоваримое не получится?

SPARTAK3959

Получится если юзать дизассемблер (не уверен, что IDA этот формат поймет... т.е. фактически реверснуть и написать либу заново. Возможно, некоторые процедуры удастся скопировать из дизассемблера без изменений - код, слава богу, 32-битный.

durka82

Возможно, некоторые процедуры удастся скопировать из дизассемблера без изменений - код, слава богу, 32-битный.

А это как? Ассемблерными вставками в С?
Форматы вызовов при этом нужно знать заранее?

street_racer

Лучше всего (чтобы си случайно не притащил свой рантайм в прогу на фортране + в асме легче управлять добавлением подчеркивания к именам функции и конвенциями вызова) создать отдельный ассемблерный модуль, который компилируется и линкуется к основной программе. Можно использовать любой современный ассемблер - fasm, nasm, yasm - ida все равно не умеет правильно экспортировать ни в один из них :grin: .

street_racer

Сунул в IDA - этa либa файл имеет формат OMF. Тебе какие функции и модули из нее нужны? Если не все, то можно реверснуть только нужные.

durka82

Тебе какие функции и модули из нее нужны?
Мне нужны 3: INDPRI, LAFD и BJB2M1
Оставить комментарий
Имя или ник:
Комментарий: