|
|
|
Aprol |
|
|||
Опытный Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Есть скомпилированная библиотека Big.lib.
Как её подключить к компилируемой программе test.for компилятор gfortran |
|||
|
||||
Cr@$h |
|
||||
Исследователь Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: 1 Всего: 41 |
Попробуй при компоновке добавить ключ:
или
|
||||
|
|||||
Aprol |
|
|||
Опытный Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Не выходит.
Есть еще варианты? |
|||
|
||||
Cr@$h |
|
|||
Исследователь Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: 1 Всего: 41 |
Напишите ваш скрипт компиляции.
|
|||
|
||||
Aprol |
|
|||
Опытный Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
>gfortran prog.for (-L Big.lib) -o proga.exe
------------------- Пробовал все Ваши варианты. |
|||
|
||||
marcusmae |
|
|||
stravaganza Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: нет Всего: 39 |
Это - линукс? = Наверно, нужно написать вместе -LBig.lib или же лучше -L$(PWD)/Big.lib, подразумвая, что библиотека лежит в текущей директории. Странное разрешение - lib (не .а), можно увидеть консольный вывод от компиляции библиотеки и откомпиляции основной проги?
-------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
Aprol |
|
|||
Опытный Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Нет это винда. Исходников библиотеки у меня нет.
Что только уже не пробывал, даже библу переименовал. D:\...ерситет\ДИПЛОМ\наработки\TnewLIB>gfortran test_rw.for -LTident.lib D:\DOCUME~1\Anton\LOCALS~1\Temp/cc40EEUW.o:test_rw.for:(.text+0x1b71): undefined reference to `_mi1001_' collect2: ld returned 1 exit status Запускал по другому, думал сначала нужно подсунуть библу. D:\...ерситет\ДИПЛОМ\наработки\TnewLIB>gfortran -LTident.lib test_rw.for D:\DOCUME~1\Anton\LOCALS~1\Temp/ccMYwGcF.o:test_rw.for:(.text+0x1b71): undefined reference to `_mi1001_' collect2: ld returned 1 exit status |
|||
|
||||
marcusmae |
|
|||
stravaganza Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: нет Всего: 39 |
Aprol, похоже что библиотека подключается правильно. В таком случае необходимо проверить, есть ли в ней действительно искомый символ, например, он может не иметь заключительного подчерка, т.е. _mi1001 - этим управляет опция компилятора --no-underscoring. Чтобы просматривать содержимое библиотки, нужна какая-нибудь программа-дампер (COFF/PE Dumper) типа dumpbin или в линухе есть аналогичная утилита nm, не уверен, что она портируется на винду вместе с gnu-компиляторами, но почему бы и нет.
-------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
Aprol |
|
|||
Опытный Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Как её использовать ? Это так понимаю под винду. И что мне это даст? Как то изменится вызов в главной программе? Вызвается в программе вот так CALL MI1001(TN,TK,N,M,N1,K,NI,T0L,H1,ALFH,AA,XHI,BET,NKP, *GAM,NKG,ITER,IPR1,IPR2,IPR3,IALF,XXI,XXIK,UU,EPS,PR,MET) |
|||
|
||||
Aprol |
|
|||
Опытный Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
У иеня есть исходники старой версии этой библы. Так вот компилировал её в TIdent.o
Через nm получил список процедур: среди них есть нужная 000214b4 T _hxxp_ 00010a90 T _inpl1_ 00010db1 T _inpls1_ 00023b0b T _iswri_ 0000579a T _m1_ U _malloc 00000000 T _mi1001_ 0000468e T _nagr_ 000037b5 T _napr00_ 00012bf8 T _napr02_ 000062d2 T _napr11_ 00007801 T _napr1m_ 000156db T _napr2m_ 0001844d T _nim_ Ну со старой, то все работает. Когда натравляю на новую TIdent.lib: >nm TIdent.lib U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_deallocate U _for_write_seq_fmt U _for_write_seq_fmt_xmit И как то криво все работает Это сообщение отредактировал(а) Aprol - 21.2.2009, 06:31 |
|||
|
||||
Aprol |
|
|||
Опытный Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
А вот нашел:
00000000 N .debug$T 00000000 i .drectve 00000000 t .text 00000000 A DATA$TIDENT 00000000 T _MI1001 00000000 T _MI1001@108 00000008 C _GRAF 00000014 C _DIMEN 00000018 C _ATIN 00001512 T _DXDA 00001512 T _DXDA@12 00001644 T _POBD 00001644 T _POBD@112 000027ae T _TUNER 000027ae T _TUNER@16 00002870 D _RE 00002890 D _ATUN 00002e9f T _NAPR00 Прочерка в конце нет. А как переделать ? |
|||
|
||||
marcusmae |
|
|||
stravaganza Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: нет Всего: 39 |
Указать --no-underscoring в числе опций компилятору, как-то так:
Добавление подчерков используется для предотвращения конфликтов имён. Почитать об этой и других опциях gfortran можно, например, здесь. -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
Aprol |
|
||||
Опытный Профиль Группа: Участник Сообщений: 259 Регистрация: 15.6.2007 Репутация: нет Всего: нет |
Та же самая ошибка только теперь "reference to `_mi1001'".
Но она же есть в либе Может потому, что в одной библе она объявлена в верхнем регистре, а в другой в нижнем? Там где работает:
А там где нет:
Пр компиляции ищется именно _mi1001 ___________________ Вроде за это отвечает опция -fcase-lower Но он говорит такого ключа нет Это сообщение отредактировал(а) Aprol - 22.2.2009, 05:14 |
||||
|
|||||
marcusmae |
|
|||
stravaganza Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: нет Всего: 39 |
Выглядит так будто разные версии библиотеки собираются с разными опциями или разными компиляторами. Можно попробовать дать алиас к имени:
но это не очень хорошо -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Fortran | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |