Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Fortran > Создать DLL с функциями форматирования фортрана? |
Автор: mDmitriy 4.3.2013, 14:15 |
Приветствую, All! Нужна DLL, которая реализовывала бы форматирование по-фортрановски. Т.е., предоставляла бы возможность вызова функций типа string -> double и обратно double -> string По задаче надо читать текстовый файл с фортрановским выводом вещественных чисел (типа 0.1555D-06), преобразовать данные и записать обратно. DLL нужна для загрузки в .NET-приложение. Посоветуйте, плиз, среду для фортрана (смотрю в сторону Intel, благо VS 2012 есть), как вообще реализовать подобное (в общих чертах) и как собирать DLL. Спасибо. |
Автор: 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 или я чего-то подзабыл? |
Автор: mDmitriy 7.3.2013, 20:53 | ||
Спасибо за ответ ![]() Как подгрузить созданную DLL - я разберусь. Проблема как раз со строковым вводом/выводом вещественных чисел. Я на Фортране когда-то писал и тоже думал, что там D при степени... Но в моем случае там встречаются D, d & E ![]() Не говоря уж о странных форматах, типа 460.00E+05 и там же 0.461D+08 Поэтому и хотелоь бы иметь в DLL аналог функции WRITE (а лучше и READ), для которой можно было бы определить в параметрах строку формата и значение. |