Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Работа с Intel Fortran через Visual Studio 2003 и не только

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Открыть новую тему     Написать ответ в эту тему

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kerrigan
если тебе так в жилу пришлась эта численная библиотека, то глянь так же на нашу подборку:
http://forum.ru-board.com/topic.cgi?forum=33&topic=7860&start=0&limit=1&m=2#1
там много чего полезного есть...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 14:54 29-01-2011
SuperAlexis



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В ходе перевода старого кода F90 в 64-х разрядный возникла проблема:
не удается запустить dllprogress (был такой пример в CVF 6.6) как приложение х64.
На платформе х32 работает. Удалось запустить созданное на его основе windows- приложение х64 (без использования динамической библиотеки). Что посоветуете?

Всего записей: 45 | Зарегистр. 25-10-2010 | Отправлено: 21:40 14-02-2011 | Исправлено: SuperAlexis, 21:41 14-02-2011
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SuperAlexis

Цитата:
не удается запустить dllprogress (был такой пример в CVF 6.6) как приложение х64.

На платформе х64 при запуске 64-битной программы подключить к ней 32-битную ДЛЛ нельзя, система сразу же прибивает нафиг. Надо перекомпилировать ДЛЛ как 64-битную, иначе не заработает. Кстати, на 32-битной винде семейства NT c 16-битными DLL еще хуже: их не позволяется загрузить даже 16-битной программе, которая сама по себе нормально работает в NTVM.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 22:23 14-02-2011
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETPНа платформе х64 при запуске 64-битной программы подключить к ней 32-битную ДЛЛ нельзяИнтересно узнать - а существует ли ПО по автоматической перекомпиляции/трансляции/... 32х-битных DLL в 64x-битные без доступа к первичным кодам, т.е. есть только 32х-битные DLL? Или это как-то самому можно сделать без особых ухищрений?

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 17:07 15-02-2011
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Igorr
Да вроде без исходников нельзя.
Чисто теоретически (насколько позволяют мои дилетантские знания по различию между 16, 32 и 64-битными длл) должно быть можно написать длл-прокси - транслятор вызовов между разнобитными длл (и например что-то похожее есть для использования длл в .Net-коде).
Но с другой стороны, ничего подобного мне не встречалось (но это не значит, что его нет). Так что либо это совсем никому не нужно, либо настолько сложно/затратно, что проще переписать заново.

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 17:38 15-02-2011
SuperAlexis



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP, Igorr, KChernov
Господа! Я же говорю о пересборке примера из компакт фортрана. Естественно все исходники есть. Строю приложение вин32 - все работает. Строю х64 - собирается без ошибок, а вот работать не хочет. Создает диалог прогрессбара из ресуросв, устанавливает заголовок, устанавливает функции-обработчики событий, а вот отображать не хочет!
Те же модули, собранные в виде одной программы (без дллей) формируют вполне рабочее приложение как для 32, так и для 64 разрядов. При трассировке все используемые переменные для собственно приложения и его версии с использованием длл имеют одинаковые значения...
Пытался менять опции компилятора (пока не все их изучил) - не помогает.
 
 

Всего записей: 45 | Зарегистр. 25-10-2010 | Отправлено: 20:58 15-02-2011
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SuperAlexis
Как говорится - нихт ферштейн! Одно только маленькое примечание (можете пинать ногами за его очевидность): а учли ли Вы, что в 64-битной системе размерность другая? Т.е. в 32-битной системе всякие там хэндлы и указатели - они integer*4, a в 64-битной они уже integer*8? Сей вопрос может быть нагло затуманен использованием спецификации kind=, которая у разных компиляторов интерпретируется по-разному. Я вот этой фишкой никогда не пользуюсь, так и пишу по-старинке: integer*4...
 
Добавлено:
Да, в дополнение, про пересборку. И исходники от CVF. Фишка в том, что если Вы перекомпилировали исходники на CVF 6.6 или вроде того, который таки понимал 64-битную систему, но только в лице Интеловского Итаниума, то можете эту ДЛЛ выкинуть в помойку. Это тупиковая ветвь эволюции, коды Итаниума сейчас практически не поддерживаются. Граждане от АМД радикально утерли нос Интелу с 64-битной системой под Винду, убив его на корню. Даже сам Интел сейчас маркирует свои процы так, что они определяются как AMD-64. Короче, на самом CVF перекомпилировать ДЛЛ под 64-битную систему нельзя, надо брать другой компилятор. Более современный. Который уже в курсе, что АМД местами разгромила Интел всухую.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 12:10 16-02-2011
SuperAlexis



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMETP
1. Естественно все размерности хендлов и указателей отслеживаются (4 бита и 8 бит), что я наблюдаю в отладчике.
2. Для перестройки проекта использую интел-фортран версия 12ХЕ (интегрирована в студио 2010) на платформе с интел-7.
3. Построенный тестовый проект без использования длл (тело функции с прогрессбаром в качестве подпрограммы включено в код приложения) работает в х64 без проблем. Переход же к длл работать отказывается - нет отображения окна прогрессбара.
В отладчике сопоставлял работу обеих (с длл и без длл) приложений - значения всех используемых переменных одинаковы.  
Не знаю куда копать. ПЛЗ, хелп ме.

Всего записей: 45 | Зарегистр. 25-10-2010 | Отправлено: 20:01 16-02-2011
OlikF

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Пользуюсь Visual Studio 2005,Fortran Compiler 11.0.074. Понадобилась библиотека IMSL, скачала версию 7.0.
Пытаюсь подключить библиотеку (в Tools и в Properties все пути прописаны)
Но не могу понять, как разблокировать лицензию. В инструкции написано:
 
Для разблокирования библиотеки, скопировать файл imsl_license.lic в {каталог установки}\VNI\license\.
Если будут проблемы, можно скопировать license.dat в c:\flexlm\, либо добавить license.dat в lmtools.
 
Первый способ я попробовала, но он не помогает. Простая программка для проверки подключаемости библиотеки:
 
use numerical_libraries
IMPLICIT NONE
INTEGER NOUT
REAL V, X
X = 0.5
V = GAMMA(X)
WRITE (*,*) V
end
 
Выдает ошибки:
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_timer referenced in function _imslf_highland_check
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_free_job referenced in function _cleanup_lm_license
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol __imp__MessageBoxA@16 referenced in function _imslf_flexlm
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_get_config referenced in function _imslf_flexlm
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_set_attr referenced in function _imslf_flexlm
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_hostname referenced in function _imslf_flexlm
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_status referenced in function _imslf_flexlm
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_username referenced in function _imslf_flexlm
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_userlist referenced in function _imslf_flexlm
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_checkout referenced in function _imslf_flexlm
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_perror referenced in function _imslf_flexlm
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_lic_where referenced in function _imslf_flexlm
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_new_job referenced in function _imslf_flexlm
1>imsls_err.lib(flexlm.obj) : error LNK2019: unresolved external symbol _lc_get_errno referenced in function _imslf_flexlm
1>Debug\Console1.exe : fatal error LNK1120: 14 unresolved externals
 
 
Судя по ошибкам проблема именно в разблокировании лицензии. FlexLm и LMTools я никогда не пользовалась, как быть?

Всего записей: 4 | Зарегистр. 28-02-2011 | Отправлено: 18:51 28-02-2011
SuperAlexis



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пути прописывай в свойствах проекта:
Проект->Свойства.  
В параметрах Visual Studio ничего не менять. Вот ссылки на пример от производителя:
http://www.vni.com/tech/imsl/gettingStarted/using/use_for_win.php
http://www.vni.com/tech/imsl/gettingStarted/running/run_for_win.php  
Удачи!

Всего записей: 45 | Зарегистр. 25-10-2010 | Отправлено: 21:27 28-02-2011
OlikF

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Этот вариант я тоже попробовала: Project->Properties->Fortran->General/Linker (там прописывала дополнительные библиотеки и Additional Dependencies). Но рез-т тот же самый. Поэтому я и полагаю, что это не из-за того, что я неправильно подключаю библиотеку к самому проекту.

Всего записей: 4 | Зарегистр. 28-02-2011 | Отправлено: 21:44 28-02-2011
SuperAlexis



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну, а рекомендации сайта?
http://www.vni.com/tech/imsl/gettingStarted/using/use_for_win.php  
http://www.vni.com/tech/imsl/gettingStarted/running/run_for_win.php  
по подключению библиотеки выполнены?
 
Насколько я помню, use numerical_libraries  уже не пишут, как было возможно в CVF.
 
               НАДО:
INCLUDE 'link_fnl_static.h' - для статической линковки  
и
INCLUDE 'link_fnl_chare.h' - для динамической!!!
 
далее указать используемые функции, например,
USE LSARG_INT
USE WRRRN_INT

Всего записей: 45 | Зарегистр. 25-10-2010 | Отправлено: 22:10 28-02-2011
OlikF

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня эти ссылки просто отсылают на главную страницу сайта производителя, поэтому я не поняла, о чем именно речь.
 
Я сделала, как Вы подсказали:
 
INCLUDE 'link_fnl_chare.h'
use GAMMA_INT
IMPLICIT NONE
! Declare variables
INTEGER NOUT
REAL V, X
! Compute
X = 0.5
V = GAMMA(X)
! Print the results
WRITE (*,*) V
end
 
Но получаю ошибку линковки:
 
1>LINK : fatal error LNK1104: cannot open file 'mkl_intel_c.lib'

Всего записей: 4 | Зарегистр. 28-02-2011 | Отправлено: 22:17 28-02-2011
SuperAlexis



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OlikF
Ну, на сайте полно полезной информации - надо поковырять его.
Кроме того, видимо, п Вашем проекте не прописан путь к библиотеке.

Всего записей: 45 | Зарегистр. 25-10-2010 | Отправлено: 22:50 28-02-2011
OlikF

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дело в том, что у меня нет именно этого файла (проверила поиском), поэтому прописать для нее путь просто не могу.

Всего записей: 4 | Зарегистр. 28-02-2011 | Отправлено: 23:45 28-02-2011
SuperAlexis



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OlikF
это файл фортрана - он должен лежать в  
C:\...tel\ComposerXE-2011\mkl\lib\ia32> (я говорю о фортране 2011 интегрированном в ВСтудио-2010)

Всего записей: 45 | Зарегистр. 25-10-2010 | Отправлено: 23:57 28-02-2011
Krav



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите запустить программу, которая использует IMSL на другом компьютере. Проблема заключается в том, что программа требует файл imslcmath_dll.dll.
Сделал статическую линковку по мануалу http://forums.vni.com/showthread.php?p=8210 - не помогло. Пути указывал в формате $(IntDir)\include\ и $(IntDir)\lib\ заранее положив все нужные файлы в папку с компилируемой программой.
 
Также менял переменные среды, заменяя пути, но все равно не помогло.
 
Использую VS 2008 + IMSL 7.0 for C++
 
 

Всего записей: 5 | Зарегистр. 09-03-2006 | Отправлено: 18:44 30-03-2011
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Krav
Посмотри здесь, может быть, поможет

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 22:32 30-03-2011
Krav



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andrew10
К сожалению версия патченных библиотек только для фортрана, а мне необходимо для с++
 
вопрос остается в силе

Всего записей: 5 | Зарегистр. 09-03-2006 | Отправлено: 16:07 01-04-2011
terminat0r



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Krav

Цитата:
Проблема заключается в том, что программа требует файл imslcmath_dll.dll.

И что, нельзя вместе с программой дать эту библиотеку?

Всего записей: 2084 | Зарегистр. 31-03-2002 | Отправлено: 16:29 01-04-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Работа с Intel Fortran через Visual Studio 2003 и не только


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru