![]() |
|
![]() ![]() ![]() |
|
Amalthea |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
Нужна помощь!
Раньше никогда не сталкивалась с библиотеками .lib, что это такое, как используются и т.д. Есть Папка Toolkit с разными процедурами на фортране и другой информацией. В ней есть папка с библиотеками Toolkit/lib/spicelib.lib и support.lib Я правильно понимаю, для того чтобы воспользоваться этими процедурами необходимо подключить эти библиотеки spicelib.lib и support.lib ? Вообще данные были взяты с сайта НАСА. Я туда написала, мне ответили, прислали кучу информации с описанием этих процедур и др. И написали "You will need to link your application to the library SPICELIB (toolkit\lib\spicelib.lib)." У меня FPS4.0 ![]() |
|||
|
||||
FCM |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
Как и объектные файлы, lib файлы нужно линковать (компоновать) к проекту, в котором используешь их содержимое.
Обычно, если используется IDE, в свойствах проекта есть опция, где можно указать необходимые (на этапе компоновки) библиотеки. Еще в линейке Visual Fortran (но не знаю было ли это уже в FPS4) - можно явно включить lib-файл в проект (туда где Sources) - можно воспользоваться директивой !DEC$ OBJCOMMENT LIB : "путь_к_библиотеке"для автоматической линковки стат.библиотеки (В FPS возможно вместо !DEC надо набирать !MS - точно не помню) Это сообщение отредактировал(а) FCM - 10.11.2010, 09:52 |
|||
|
||||
Amalthea |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
Пробовала создавать модуль таким образом:
MODULE mod_spice !MS$OBJCOMMENT LIB:"D:\TOOLKIT\LIB\SPICELIB.lib" END MODULE mod_spice Затем подключала этот модуль в основную программу: PROGRAM CONVTM USE mod_spice IMPLICIT NONE ... Выдает ошибку: Linking... Text1.obj : error LNK2001: unresolved external symbol _FURNSH@8 Text1.exe : fatal error LNK1120: 1 unresolved externals Error executing link.exe. Сейчас установила IntelFortran 11, попробую в нем поковыряться. |
|||
|
||||
Amalthea |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
Воспользовалась советами Cr@$h
1. Можно непосредственно добавить файл *.lib в проект Visual Studio посредством команды Project > Add Existing Item…. 2. Можно указать имя библиотеки импорта в опциях линкера. Для этого нужно открыть окно настроек проекта (Project > Properties…) и добавить в поле Aditional Options на вкладке Linker\Command Line имя *.lib. Выдает ошибку: Fatal error LNK1104: cannot open file 'LIBC.lib' Нашла решение: Use the Multi-Thread-Safe version LIBCMT.LIB instead of LIBC.LIB that may fix. 1. Go to the Project property page. 2. Go to Linker on the left tree view panel 3. Open the Input node 4. In the "Additional Dependencies" you will find LIBC.lib, replace that with LIBMT.lib Rebuild your project. Но тоже не помогло. Теперь пишет: Fatal error LNK1181: cannot open file 'LIBMT.lib' |
|||
|
||||
Amalthea |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
Попробовала прописать игнор на LIBC.lib, ошибок больше не выдает, но процедуры из этой библиотеки все равно не вызываются. Буду искать дальше ошибки.
|
|||
|
||||
FCM |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
||||
|
||||
Amalthea |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
CHARACTER*(*) METAKR
PARAMETER ( METAKR = 'convtm.tm' ) CALL FURNSH ( METAKR ) ---------------------------- файл: convtm.tm содержит \begindata KERNELS_TO_LOAD = ( 'kernels/lsk/naif0008.tls', 'kernels/sclk/cas00084.tsc' ) \begintext |
|||
|
||||
Amalthea |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
Проблема решена!
Решила запускать программу через FAR. Библиотеки подключала следующим образом: !MS$OBJCOMMENT LIB:"D:\TOOLKIT\LIB\SPICELIB.lib" А в файле ifortvars_ia32.bat C:\ProgramsFiles\Intel\Compiler\11.0\066\fortran\Bin\IA32\ifortvars_ia32.bat в конце файла добавила такой код: @if exist %1.exe del %1.exe.bat ifort.exe /4Yportlib /w /Ox /real-size:64 /free %1.f >%1.log @if exist %1.exe del %1.obj @if exist %1.exe del %1.log @if exist %1.exe %1.exe И все заработало! |
|||
|
||||
FCM |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
Наверное нет никаких противопоказаний, чтобы и через IDE заработало.
|
|||
|
||||
Amalthea |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
Возможно и нет противопоказаний, но у меня не получилось и специалистов вокруг нет.
FAR меня устраивает. Считаю, что тему можно закрыть ![]() |
|||
|
||||
FCM |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
||||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Fortran | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |