|
|
|
mDmitriy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 4.3.2013 Репутация: нет Всего: нет |
Приветствую, All!
Нужна DLL, которая реализовывала бы форматирование по-фортрановски. Т.е., предоставляла бы возможность вызова функций типа string -> double и обратно double -> string По задаче надо читать текстовый файл с фортрановским выводом вещественных чисел (типа 0.1555D-06), преобразовать данные и записать обратно. DLL нужна для загрузки в .NET-приложение. Посоветуйте, плиз, среду для фортрана (смотрю в сторону Intel, благо VS 2012 есть), как вообще реализовать подобное (в общих чертах) и как собирать DLL. Спасибо. |
|||
|
||||
FCM |
|
|||
Опытный Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
Что касается DLL, один из простейших вариантов может быть следующим.
Создаешь в Visual Studio c интегрированным Intel Fortran фортран-проект типа DLL. В проекте создаешь .f90-исходник с текстом подпрограммы (или функции), которая делает нечто. После заголовка подпрограммы указываещь директиву !DEC$ATTRIBUTES DLLEXPORT :: имя_подпрограммы Строишь проект, получаешь .dll-файл и .lib-файл, причем второй должен быть доступен С++ программе при линковке, а первый при выполнении программы. В С++ программе описываешь прототип фортран-подпрограммы со спецификаттором extern "C" и возможно спецификатором __declspec(dllimport) НЕ знаю, подходит ли это для NET-приложений на С++ или там нужны другие варианты подгрузки DLL. Насчет конвертации чисел в строки и обратно - не совсем понятна суть задачи. И почему символ D при степени. По моему, при записи из фортран-программы в файл REAL(8)-чисел результативно степень оказывается записанной через E или я чего-то подзабыл? Это сообщение отредактировал(а) FCM - 7.3.2013, 19:38 |
|||
|
||||
mDmitriy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 4.3.2013 Репутация: нет Всего: нет |
Спасибо за ответ Как подгрузить созданную DLL - я разберусь. Проблема как раз со строковым вводом/выводом вещественных чисел. Я на Фортране когда-то писал и тоже думал, что там D при степени... Но в моем случае там встречаются D, d & E Не говоря уж о странных форматах, типа 460.00E+05 и там же 0.461D+08 Поэтому и хотелоь бы иметь в DLL аналог функции WRITE (а лучше и READ), для которой можно было бы определить в параметрах строку формата и значение. |
|||
|
||||
FCM |
|
|||
Опытный Профиль Группа: Участник Сообщений: 461 Регистрация: 30.3.2009 Репутация: 8 Всего: 9 |
Не совсем понятно, в чем проблема. Можно в фортран-программе считать данные в свободном формате и записать их в свободном же формате в другой файл - должно получиться с символом E при степени. А с символом E при степени C++ программа может напрямую работать. Добавлено через 3 минуты и 13 секунд
D при степени указывается для буквально заданных констант типа REAL(8) и это правильно. Но в результате записи в файл (по крайней мере в свободном формате) должен получаться символ E при степени |
|||
|
||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Fortran | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |