Я мог бы быть неправильно, учитывая, что там очень мало информации, чтобы идти дальше, но ...
От here: первые компиляторы F77 приложили _
к именам функций в ABI. Это поведение отличается от C, которое просто принимает имя функции и использует это как имя в ABI.
Некоторые компиляторы F77 вели себя по-разному, а верхний кожух полное имя подпрограммы, так что foo()
стал FOO()
, когда видели компиляторами C. UNIX Фортрана имитируется поведение C и просто скопировать pasta'd имя так, чтобы foo()
был foo()
в ABI тоже.
Если вы посмотрите на привязки BLAS к C для ссылочной реализации here, вы увидите, что они обрабатывают задние символы подчеркивания при работе с F77. Я бы сказал, что подчеркивания были гораздо более распространенной особенностью F77 ABI в прошлом, чем не иметь их.
Впоследствии Fortran 2003 представил совместимость с C (см. here). Это сделало схему именования функций одинаковой, когда использовались определенные конструкции Fortran (см. here).
Я собираюсь, таким образом, предположить, что это имеет какое-то отношение к различиям ABI в версиях Fortran. Или даже просто через компиляторы, учитывая, что разные компиляторы, похоже, имеют разные формы поведения в Fortran.
Так что, опять же, я не уверен, что это соответствует вашей ситуации, учитывая, что в вашем вопросе не так много, но я не мог вместить это все в комментарий, так что это как ответ'.
И ЕСЛИ Я НЕПРАВИЛЬНО РАССМАТРИВАЮТ, ЧТО Я МОГУ ИСПРАВИТЬ ОТЧЕТ МАХ.
ТЛ; др: потому, что версии компилятора
Слышали ли вы о 'LAPACKE' (интерфейс C до Lapack)? Существует также интерфейс C для BLAS. – Stefan