Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создать DLL с функциями форматирования фортрана? 
:(
    Опции темы
mDmitriy
Дата 4.3.2013, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.3.2013

Репутация: нет
Всего: нет



Приветствую, All!

Нужна DLL, которая реализовывала бы форматирование по-фортрановски.
Т.е., предоставляла бы возможность вызова функций типа string -> double и обратно double -> string

По задаче надо читать текстовый файл с фортрановским выводом вещественных чисел (типа 0.1555D-06), преобразовать данные и записать обратно.

DLL нужна для загрузки в .NET-приложение.

Посоветуйте, плиз, среду для фортрана (смотрю в сторону Intel, благо VS 2012 есть), как вообще реализовать подобное (в общих чертах) и как собирать DLL.

Спасибо.


PM MAIL   Вверх
FCM
Дата 7.3.2013, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
mDmitriy
Дата 7.3.2013, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.3.2013

Репутация: нет
Всего: нет



Цитата(FCM @ 7.3.2013,  19:21)
Что касается DLL, один из простейших вариантов может быть следующим.
Создаешь в Visual Studio  c интегрированным Intel Fortran фортран-проект типа DLL.
В проекте создаешь .f90-исходник с текстом подпрограммы (или функции), которая делает нечто.
После заголовка подпрограммы указываещь директиву 
!DEC$ATTRIBUTES DLLEXPORT :: имя_подпрограммы

Строишь проект, получаешь .dll-файл и .lib-файл, причем
второй должен быть доступен С++ программе при линковке, а первый при выполнении программы.
В С++ программе описываешь прототип фортран-подпрограммы со спецификаттором extern "C"  и возможно спецификатором __declspec(dllimport)

НЕ знаю, подходит ли это для NET-приложений на С++ или там нужны другие варианты подгрузки DLL.

Насчет конвертации чисел в строки и обратно - не совсем понятна суть задачи. И почему символ D при степени. По моему, при записи из фортран-программы в файл REAL(8)-чисел результативно степень оказывается записанной через E   или я чего-то подзабыл?

Спасибо за ответ smile 
Как подгрузить созданную DLL - я разберусь.
Проблема как раз со строковым вводом/выводом вещественных чисел.
Я на Фортране когда-то писал и тоже думал, что там D при степени...
Но в моем случае там встречаются D, d & E smile 
Не говоря уж о странных форматах, типа 460.00E+05 и там же 0.461D+08

Поэтому и хотелоь бы иметь в DLL аналог функции WRITE (а лучше и READ), для которой можно было бы определить в параметрах строку формата и значение.

PM MAIL   Вверх
FCM
Дата 10.3.2013, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9



Цитата(mDmitriy @  7.3.2013,  20:53 Найти цитируемый пост)
Проблема как раз со строковым вводом/выводом вещественных чисел.

Не совсем понятно, в чем проблема.
Можно в фортран-программе считать данные в свободном формате  и записать  их в свободном же формате в другой файл - должно получиться с символом E при степени. 
А с символом E при степени  C++ программа может напрямую работать.

Добавлено через 3 минуты и 13 секунд
Цитата(mDmitriy @  7.3.2013,  20:53 Найти цитируемый пост)
Я на Фортране когда-то писал и тоже думал, что там D при степени...

D при степени указывается для буквально заданных констант типа REAL(8)  и это правильно.
Но в результате записи в файл (по крайней мере в свободном формате) должен получаться символ E при степени
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Fortran | Следующая тема »


 




[ Время генерации скрипта: 0.1231 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.