Общий объект не загружен

Я пытаюсь вызвать код FORTRAN из R. Для этого я создаю файл .so, давая команду R CMD SHLIB filename.f Файл .so создается без каких-либо предупреждений (!!). Чтобы привести файл в R, я даю следующую команду в р

dyn.load("filename.so")

Файл загружается, как показано, когда я даю команду getLoadedDlls() в R. Но когда я пытаюсь запустить его с помощью .Fortran("filename"), он выдает ошибку

Ошибка в .Fortran("имя файла"): имя символа Fortran "имя файла" отсутствует в таблице загрузки


person curious programmer    schedule 14.06.2016    source источник
comment
Вы читали stackoverflow.com/q/18767463? По существу возможно, что компилятор добавит _ (или два) в конец имени подпрограммы. .Fortran может попытаться добавить это автоматически. Существуют различные инструменты для отображения содержимого файла dll, чтобы вы могли попытаться выяснить, какое имя на самом деле используется, например stackoverflow.com/ a/375284 Это может помочь определить, используется ли правильное имя.   -  person d_1999    schedule 14.06.2016
comment
Извините, я понял, что вы используете расширение .so, поэтому вы, вероятно, работаете в Linux, и в этом случае вы можете попробовать команду nm, чтобы посмотреть, какие символы присутствуют в библиотеке.   -  person d_1999    schedule 14.06.2016
comment
Пробовали .Call("filename")?   -  person J_F    schedule 14.06.2016
comment
nm filename.so дал мне кучу выходных результатов. Например, - 00000000002067b8 d CTOR_END и многое другое   -  person curious programmer    schedule 14.06.2016
comment
Может быть, вы можете попробовать readelf (см. stackoverflow.com/q/34732) или попробовать nm filename.so | grep -i X, где X — это имя подпрограммы, которую вы пытаюсь позвонить.   -  person d_1999    schedule 14.06.2016
comment
@J_F .Call (имя файла) выдает ошибку - Ошибка в .Call (имя файла): имя символа C имя файла отсутствует в таблице загрузки   -  person curious programmer    schedule 14.06.2016
comment
Согласно этому обсуждению stat.ethz.ch/pipermail/r- devel/2011-May/060948.html вы можете попробовать .Fortran("filename_"). Но это только предположение   -  person J_F    schedule 14.06.2016
comment
@ d_1999 Fortran добавил _ после имени подпрограммы. Спасибо за помощь.   -  person curious programmer    schedule 14.06.2016
comment
@curiousprogrammer, если это решение вашей проблемы, вы можете ответить на свой вопрос.   -  person d_1999    schedule 14.06.2016