VS2010 / Intel Fortran не находит символы с несколькими определениями

Справочная информация: Мы используем очень старый код Фортрана (F77), изначально разработанный для VAX / OpenVMS, который позволял настраивать связывание — то есть вы могли определить несколько символов в вашей библиотеке, но получили возможность заставить компоновщик использовать определенный символ ,

Используя VS2010 и Intel Fortran 2013, я ищу способ для компоновщика заставить его использовать символ (то есть MYSUBROUTINE) из определенной библиотеки, когда он существует в нескольких библиотеках.

У меня есть смешанный проект C ++ / Fortran. Разработанные мной библиотеки не являются моими собственными, поэтому удаление неиспользуемой подпрограммы не является тривиальным. Поэтому я ищу способ заставить компоновщик VS2010 / Intel Fortran 2013 использовать определенную подпрограмму.

Я полагаю, что эта проблема не является уникальной для нас, так как многие устаревшие кодовые дома, особенно те, которые имеют большое количество Fortran, должны иметь эту проблему.

1

Решение

При поиске библиотек (.lib) компоновщик будет использовать первый соответствующий символ, который он найдет. Библиотеки ищутся в четко определенном порядке. Чтобы другая библиотека имела приоритет для определенного символа, укажите эту библиотеку ранее в командной строке ссылки (перечислите ее ранее в «Линкер»> «Ввод»> «Дополнительные зависимости» для исполняемого проекта в Visual Studio).

Если у вас есть несколько подпрограмм в нескольких библиотеках, которые вы хотите выбрать, то вам нужно будет использовать другой подход, такой как распаковка библиотек и выбор объектного кода для подпрограмм, которые вы хотите, в качестве отдельного шага.

Обратите внимание, что объектные файлы имеют приоритет перед библиотеками при поиске символов.

Несколько определенные символы применяются только к символам в объектных файлах (.obj).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]