Compaq Visual Fortran — сбой при связывании файла .LIB

Когда я компилирую с помощью Compaq Visual Fortran, я получаю эти ошибки (когда он запускает процесс компоновщика), которые должны быть расположены в файле .lib, который, как мне казалось, я добавил в рабочую область:

X30XFULL.OBJ : error LNK2001: unresolved external symbol _BCON@4
X30XFULL.OBJ : error LNK2001: unresolved external symbol _RCON@16

Судя по тому, где я гуглил, похоже, что Compaq Visual Fortran (версия 6, FYI) не может найти файлы библиотеки...

Мой главный вопрос, как я могу их использовать? Могут ли быть другие отсутствующие файлы? Вот что я пробовал:

  • Щелкните правой кнопкой мыши -> Добавление файлов в окно FileView.
  • Перейдите в раздел «Проект» -> «Настройки», щелкните вкладку «Ссылка» и в категории ввода добавьте файлы библиотеки в модули объектов/библиотек (bprop.lib rprop.lib) и укажите путь к дополнительной библиотеке, где находятся файлы. Я также сделал это на вкладке «Ресурсы» и там, где написано «Дополнительные каталоги включения ресурсов», я указал каталог, в котором находились эти файлы.
  • Чтобы покрыть свои основы, я также поместил эти файлы в файл рабочей области проекта, где будет сгенерирован скомпилированный исполняемый файл, и почти в любое место, которое, как я мог подумать, CVF мог бы искать, чтобы найти эти файлы.

Небольшая предыстория:

У меня есть этот исполняемый файл Fortran, последний раз скомпилированный в 90-х годах. Судя по моим исследованиям, это 16-битная компиляция, которая не будет работать на 64-битной машине.

Исходный код имеет, по крайней мере, из того, что мы можем собрать, 16-битные скомпилированные библиотеки. Без исходного компилятора мы не можем понять, как их просматривать или использовать. У нас также есть (полу)эквивалентный файл библиотеки, который на самом деле является файлом .FOR. Насколько нам известно, BPROP.FOR и BPROP.LIB могут быть одним и тем же файлом (они были найдены в одной и той же области исходного кода). Если мы используем файл BPROP.FOR, программа может скомпилироваться, но у нас возникают проблемы с результатами, которые мы проследили до информации, которая используется/собирается/обрабатывается в этом файле.

Однако у нас есть 32-битные версии (как мы думаем) одних и тех же файлов .lib. Итак, мы пытаемся использовать то, что используется для компиляции исполняемого файла Fortran, что приводит к ошибкам, указанным выше.


person A.D.    schedule 26.10.2012    source источник


Ответы (1)


Нашел ответ, по крайней мере для меня. Я не знаю, насколько легко будет экстраполировать, если кто-то еще найдет эти ответы, но я решил это именно так.

Со старыми библиотеками Fortran все, что мне нужно было сделать, это добавить их в представление FileList, в котором есть все различные файлы fortran (.FOR и т. д.). Мне не нужно было добавлять эти библиотеки в настройки, как я уже упоминал, но это тоже сработает. Кроме того, мне не нужно было добавлять какие-либо дополнительные объявления или что-то подобное.

Что мы действительно выяснили, так это то, что рассматриваемая функция (BCON и RCON), которая вызывает эти файлы .LIB, требует дополнительного аргумента. Единственный способ, которым я это обнаружил, заключался в изучении другого исходного кода, в котором использовались эти библиотеки, поэтому, если кто-то застрял, как я, это было бы хорошим местом для начала. В качестве альтернативы, если вы можете прочитать файл .lib в шестнадцатеричном редакторе, вы можете как бы разобрать функции и их аргументы.

Конечно, если у вас есть исходный код для указанных аргументов, это еще лучше. :)

person A.D.    schedule 31.10.2012