Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Fortran > [Interop] скрестить фортран с сишной либой |
Автор: roginovicci 29.9.2009, 12:31 | ||||||||
Здравствуйте! У меня такая проблема: есть сишная либа:
делаем из нее либу так:
пытаемся ее скормить фортрановскому коду:
компилим:
получаем ошибку линковки: main.o: In function `MAIN__': main.f:(.text+0x170): undefined reference to `fact_' collect2: ld returned 1 exit status Внимание Вопрос! как слинковать это дело? Признательности за помощь не будет предела!!! |
Автор: Lipetsk 29.9.2009, 13:02 |
а где вы библиотеку подключаете? |
Автор: roginovicci 29.9.2009, 13:09 | ||
Lipetsk, см выше, я уже писал:
это и есть команда линковки. На ней затык :( |
Автор: roginovicci 29.9.2009, 14:47 |
еще один вопрос! Если в коде функция содержит символы в разных регистрах, например, FuncTion() нельзя ли как нибудь скомпилировать ее в библиотеку где будут имена только в нижнем регистре т.е. function? Или может быть есть параметр при линковке игнорирующий регистр? |
Автор: roginovicci 1.10.2009, 16:25 |
Спасибо за помощь. Вопрос решается согласно инструкции изложенной здесь: http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html что касается имен в разном регистре, то приходится править код добавив дирестивы типа #define Function function также полезной может оказаться опция компилятора -fno-underscoring. FCM, статическая либа называется libfact.a подключается она при линковке опцией -lfact здесь я не ошибся. |
Автор: popovda 30.10.2009, 20:32 |
Юзайте bind C и будет вам счастье![]() |