![]() |
|
![]() ![]() ![]() |
|
roginovicci |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Здравствуйте!
У меня такая проблема: есть сишная либа:
делаем из нее либу так:
пытаемся ее скормить фортрановскому коду:
компилим:
получаем ошибку линковки: main.o: In function `MAIN__': main.f:(.text+0x170): undefined reference to `fact_' collect2: ld returned 1 exit status Внимание Вопрос! как слинковать это дело? Признательности за помощь не будет предела!!! |
||||||||
|
|||||||||
Lipetsk |
|
|||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: нет Всего: 5 |
а где вы библиотеку подключаете?
|
|||
|
||||
roginovicci |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Lipetsk, см выше, я уже писал:
это и есть команда линковки. На ней затык :( |
|||
|
||||
roginovicci |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
еще один вопрос! Если в коде функция содержит символы в разных регистрах, например, FuncTion() нельзя ли как нибудь скомпилировать ее в библиотеку где будут имена только в нижнем регистре т.е. function? Или может быть есть параметр при линковке игнорирующий регистр?
|
|||
|
||||
FCM |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
1) У тебя во одном месте фигурирует libfact, в другом lfact - разве так должно быть?
2) Кроме того, попробуй в С поменять имя fact на FACT. 3) Насчеn gcc+g77 не знаю. А в Intel Fortran c помощью директив можно подстроиться под "любое" имя вызываемой С-процедуры. Также предполагаю, что это возможно в любом компиляторе, поддерживающем Фортран-2003 - см. описание модуля iso_binding Это сообщение отредактировал(а) FCM - 1.10.2009, 15:49 |
|||
|
||||
roginovicci |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 29.9.2009 Репутация: нет Всего: нет |
Спасибо за помощь. Вопрос решается согласно инструкции изложенной здесь:
http://www.yolinux.com/TUTORIALS/LinuxTuto...ortranAndC.html что касается имен в разном регистре, то приходится править код добавив дирестивы типа #define Function function также полезной может оказаться опция компилятора -fno-underscoring. FCM, статическая либа называется libfact.a подключается она при линковке опцией -lfact здесь я не ошибся. |
|||
|
||||
popovda |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 9.6.2006 Где: Москва Репутация: нет Всего: 6 |
Юзайте bind C и будет вам счастье
![]() -------------------- С уважением, Попов Д.А. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Fortran | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |