Справочная информация: Мы используем очень старый код Фортрана (F77), изначально разработанный для VAX / OpenVMS, который позволял настраивать связывание — то есть вы могли определить несколько символов в вашей библиотеке, но получили возможность заставить компоновщик использовать определенный символ ,
Используя VS2010 и Intel Fortran 2013, я ищу способ для компоновщика заставить его использовать символ (то есть MYSUBROUTINE) из определенной библиотеки, когда он существует в нескольких библиотеках.
У меня есть смешанный проект C ++ / Fortran. Разработанные мной библиотеки не являются моими собственными, поэтому удаление неиспользуемой подпрограммы не является тривиальным. Поэтому я ищу способ заставить компоновщик VS2010 / Intel Fortran 2013 использовать определенную подпрограмму.
Я полагаю, что эта проблема не является уникальной для нас, так как многие устаревшие кодовые дома, особенно те, которые имеют большое количество Fortran, должны иметь эту проблему.
При поиске библиотек (.lib) компоновщик будет использовать первый соответствующий символ, который он найдет. Библиотеки ищутся в четко определенном порядке. Чтобы другая библиотека имела приоритет для определенного символа, укажите эту библиотеку ранее в командной строке ссылки (перечислите ее ранее в «Линкер»> «Ввод»> «Дополнительные зависимости» для исполняемого проекта в Visual Studio).
Если у вас есть несколько подпрограмм в нескольких библиотеках, которые вы хотите выбрать, то вам нужно будет использовать другой подход, такой как распаковка библиотек и выбор объектного кода для подпрограмм, которые вы хотите, в качестве отдельного шага.
Обратите внимание, что объектные файлы имеют приоритет перед библиотеками при поиске символов.
Несколько определенные символы применяются только к символам в объектных файлах (.obj).
Других решений пока нет …