LINUX.ORG.RU

скрестить фортран с сишной либой


0

0

есть сишная либа:

//fact.c
int fact(int n)
{
    int i,p;
    p=1;
    for(i=1;i<n;i++){
      p=p*i;
    }
    return p;
}
делаем из нее либу:

gcc -c fact.c -o fact.o

ar cr libfact.a fact.o

пытаемся ее скормить фортрановскому коду:

# main.f
      program demofactorial
      integer*4 fact, n
      print *, "What is n?"
      read *, n
      print *, "The value of", n, " factorial is", fact(n)
      end
компилим:

g77 -c main.f -o main.o

g77 main.o -L. -lfact -o demofact

получаем ошибку линковки:

main.o: In function `MAIN__':

main.f:(.text+0x170): undefined reference to `fact_'

collect2: ld returned 1 exit status

Внимание Вопрос! как слинковать это дело? Признательности за помощь не будет предела!!!

Ответ на: комментарий от DonPedro123

еще один вопрос! Если в коде функция содержит символы в разных регистрах, например, FuncTion() нельзя ли как нибудь скомпилировать ее в библиотеку где будут имена только в нижнем регистре т.е. function? Или может быть есть параметр при линковке игнорирующий регистр? Спасибо всем ответившим за помощь!

DonPedro123
() автор топика
Ответ на: комментарий от tzukko

Спасибо, но на эту опцию компилятор ругается. error: unrecognized command line option "-fsource-case-preserve" она была в старом компиляторе http://sunsite.ualberta.ca/Documentation/Gnu/gcc-2.95.2/html_chapter/g77_9.html сейчас она во что то перешла но я не нашел. Что вы в самом деле так нервничаете? Конечно я гуглил. Но не все же такие умные как вы, надо ж уметь спрашивать у гугла, а я чувак малограмотный...

DonPedro123
() автор топика
Ответ на: комментарий от DonPedro123

Больше вариантов не знаю.
Похоже поддержка похерена - только lower-case название функций C.

tzukko
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.